From efa391f645c4fe01ed98f596b83ffad565900c87 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Fri, 21 Jul 2023 17:27:50 +0800 Subject: [PATCH 01/29] Support for new stats in AssetResponse. (#482) --- .../stellar/sdk/responses/AssetResponse.java | 27 ++ .../responses/AssetsPageDeserializerTest.java | 304 ++++++------------ 2 files changed, 126 insertions(+), 205 deletions(-) diff --git a/src/main/java/org/stellar/sdk/responses/AssetResponse.java b/src/main/java/org/stellar/sdk/responses/AssetResponse.java index e6253650b..c9ab7eef4 100644 --- a/src/main/java/org/stellar/sdk/responses/AssetResponse.java +++ b/src/main/java/org/stellar/sdk/responses/AssetResponse.java @@ -16,6 +16,9 @@ public class AssetResponse extends Response implements Pageable { @SerializedName("paging_token") private final String pagingToken; + @SerializedName("contract_id") + private final String contractID; + @SerializedName("accounts") private final AssetResponse.Accounts accounts; @@ -31,6 +34,9 @@ public class AssetResponse extends Response implements Pageable { @SerializedName("liquidity_pools_amount") private final String liquidityPoolsAmount; + @SerializedName("contracts_amount") + private final String contractsAmount; + @SerializedName("num_accounts") private final int numAccounts; @@ -40,6 +46,9 @@ public class AssetResponse extends Response implements Pageable { @SerializedName("num_liquidity_pools") private final int numLiquidityPools; + @SerializedName("num_contracts") + private final int numContracts; + @SerializedName("flags") private final AssetResponse.Flags flags; @@ -51,28 +60,34 @@ public AssetResponse( String assetCode, String assetIssuer, String pagingToken, + String contractID, Accounts accounts, Balances balances, String amount, String claimableBalancesAmount, String liquidityPoolsAmount, + String contractsAmount, int numAccounts, int numClaimableBalances, int numLiquidityPools, + int numContracts, Flags flags, Links links) { this.assetType = assetType; this.assetCode = assetCode; this.assetIssuer = assetIssuer; this.pagingToken = pagingToken; + this.contractID = contractID; this.accounts = accounts; this.balances = balances; this.amount = amount; this.claimableBalancesAmount = claimableBalancesAmount; this.liquidityPoolsAmount = liquidityPoolsAmount; + this.contractsAmount = contractsAmount; this.numAccounts = numAccounts; this.numClaimableBalances = numClaimableBalances; this.numLiquidityPools = numLiquidityPools; + this.numContracts = numContracts; this.flags = flags; this.links = links; } @@ -129,6 +144,18 @@ public int getNumAccounts() { return numAccounts; } + public String getContractID() { + return contractID; + } + + public String getContractsAmount() { + return contractsAmount; + } + + public int getNumContracts() { + return numContracts; + } + public Flags getFlags() { return flags; } diff --git a/src/test/java/org/stellar/sdk/responses/AssetsPageDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/AssetsPageDeserializerTest.java index c8d966f4d..68f5dd94a 100644 --- a/src/test/java/org/stellar/sdk/responses/AssetsPageDeserializerTest.java +++ b/src/test/java/org/stellar/sdk/responses/AssetsPageDeserializerTest.java @@ -13,48 +13,53 @@ public void testDeserialize() { assertEquals( page.getLinks().getSelf().getHref(), - "https://horizon.stellar.org/assets?order=asc&limit=10&cursor="); + "https://horizon-futurenet.stellar.org/assets?cursor=FRS1_GC6HLY2JXKXYXUU3XYC63O2RJNH4E3GEW26ABTHDF6AF6MY32B5QRISO_credit_alphanum4&limit=5&order=asc"); assertEquals( page.getLinks().getNext().getHref(), - "https://horizon.stellar.org/assets?order=asc&limit=10&cursor=AsrtoDollar_GDJWXY5XUASXNL4ABCONR6T5MOXJ2S4HD6WDNAJDSDKQ4VS3TVUQJEDJ_credit_alphanum12"); + "https://horizon-futurenet.stellar.org/assets?cursor=Fsdk_GBP5VJVRLEZWRMOARGWIPZKV26PBR7SQPHC43ZNJNTATFDOPTOQB4P7I_credit_alphanum4&limit=5&order=asc"); - assertEquals(page.getRecords().get(0).getAssetType(), "credit_alphanum12"); - assertEquals(page.getRecords().get(0).getAssetCode(), "6497847"); + assertEquals(page.getRecords().get(0).getAssetType(), "credit_alphanum4"); + assertEquals(page.getRecords().get(0).getAssetCode(), "Fsdk"); assertEquals( page.getRecords().get(0).getAssetIssuer(), - "GCGNWKCJ3KHRLPM3TM6N7D3W5YKDJFL6A2YCXFXNMRTZ4Q66MEMZ6FI2"); + "GAO5OFEWI5ABK66MSPQ6HBXSXNCQLDTF6J444ICGYIQYAPFIWZ7V4MED"); assertEquals( page.getRecords().get(0).getPagingToken(), - "6497847_GCGNWKCJ3KHRLPM3TM6N7D3W5YKDJFL6A2YCXFXNMRTZ4Q66MEMZ6FI2_credit_alphanum12"); + "Fsdk_GAO5OFEWI5ABK66MSPQ6HBXSXNCQLDTF6J444ICGYIQYAPFIWZ7V4MED_credit_alphanum4"); assertEquals(page.getRecords().get(0).getAccounts().authorized(), 1); assertEquals(page.getRecords().get(0).getAccounts().authorizedToMaintainLiabilities(), 0); assertEquals(page.getRecords().get(0).getAccounts().unauthorized(), 0); - assertEquals(page.getRecords().get(0).getBalances().authorized(), "0.0000000"); + assertEquals(page.getRecords().get(0).getBalances().authorized(), "200.0000000"); assertEquals( page.getRecords().get(0).getBalances().authorizedToMaintainLiabilities(), "0.0000000"); assertEquals(page.getRecords().get(0).getBalances().unauthorized(), "0.0000000"); assertEquals(page.getRecords().get(0).getNumClaimableBalances(), 0); assertEquals(page.getRecords().get(0).getClaimableBalancesAmount(), "0.0000000"); - assertEquals(page.getRecords().get(0).getAmount(), "0.0000000"); + assertEquals(page.getRecords().get(0).getAmount(), "200.0000000"); assertEquals(page.getRecords().get(0).getNumAccounts(), 1); assertEquals( page.getRecords().get(0).getLinks().getToml().getHref(), "https://www.stellar.org/.well-known/stellar.toml"); - assertEquals(page.getRecords().get(0).getFlags().isAuthRequired(), true); - assertEquals(page.getRecords().get(0).getFlags().isAuthRevocable(), false); + assertTrue(page.getRecords().get(0).getFlags().isAuthRequired()); + assertFalse(page.getRecords().get(0).getFlags().isAuthRevocable()); + assertEquals( + page.getRecords().get(0).getContractID(), + "CAKBXQ7XXRMY5F6YFAY4D45HY25VHNKOGWHS3KZX5ULP6E5TRVITMJS2"); + assertEquals(page.getRecords().get(0).getNumContracts(), 2); + assertEquals(page.getRecords().get(0).getContractsAmount(), "25.1230000"); } String json = "{\n" + " \"_links\": {\n" + " \"self\": {\n" - + " \"href\": \"https://horizon.stellar.org/assets?order=asc\\u0026limit=10\\u0026cursor=\"\n" + + " \"href\": \"https://horizon-futurenet.stellar.org/assets?cursor=FRS1_GC6HLY2JXKXYXUU3XYC63O2RJNH4E3GEW26ABTHDF6AF6MY32B5QRISO_credit_alphanum4&limit=5&order=asc\"\n" + " },\n" + " \"next\": {\n" - + " \"href\": \"https://horizon.stellar.org/assets?order=asc\\u0026limit=10\\u0026cursor=AsrtoDollar_GDJWXY5XUASXNL4ABCONR6T5MOXJ2S4HD6WDNAJDSDKQ4VS3TVUQJEDJ_credit_alphanum12\"\n" + + " \"href\": \"https://horizon-futurenet.stellar.org/assets?cursor=Fsdk_GBP5VJVRLEZWRMOARGWIPZKV26PBR7SQPHC43ZNJNTATFDOPTOQB4P7I_credit_alphanum4&limit=5&order=asc\"\n" + " },\n" + " \"prev\": {\n" - + " \"href\": \"https://horizon.stellar.org/assets?order=desc\\u0026limit=10\\u0026cursor=6497847_GCGNWKCJ3KHRLPM3TM6N7D3W5YKDJFL6A2YCXFXNMRTZ4Q66MEMZ6FI2_credit_alphanum12\"\n" + + " \"href\": \"https://horizon-futurenet.stellar.org/assets?cursor=Fsdk_GAO5OFEWI5ABK66MSPQ6HBXSXNCQLDTF6J444ICGYIQYAPFIWZ7V4MED_credit_alphanum4&limit=5&order=desc\"\n" + " }\n" + " },\n" + " \"_embedded\": {\n" @@ -65,56 +70,34 @@ public void testDeserialize() { + " \"href\": \"https://www.stellar.org/.well-known/stellar.toml\"\n" + " }\n" + " },\n" - + " \"asset_type\": \"credit_alphanum12\",\n" - + " \"asset_code\": \"6497847\",\n" - + " \"asset_issuer\": \"GCGNWKCJ3KHRLPM3TM6N7D3W5YKDJFL6A2YCXFXNMRTZ4Q66MEMZ6FI2\",\n" - + " \"paging_token\": \"6497847_GCGNWKCJ3KHRLPM3TM6N7D3W5YKDJFL6A2YCXFXNMRTZ4Q66MEMZ6FI2_credit_alphanum12\",\n" + + " \"asset_type\": \"credit_alphanum4\",\n" + + " \"asset_code\": \"Fsdk\",\n" + + " \"asset_issuer\": \"GAO5OFEWI5ABK66MSPQ6HBXSXNCQLDTF6J444ICGYIQYAPFIWZ7V4MED\",\n" + + " \"paging_token\": \"Fsdk_GAO5OFEWI5ABK66MSPQ6HBXSXNCQLDTF6J444ICGYIQYAPFIWZ7V4MED_credit_alphanum4\",\n" + + " \"contract_id\": \"CAKBXQ7XXRMY5F6YFAY4D45HY25VHNKOGWHS3KZX5ULP6E5TRVITMJS2\",\n" + + " \"num_accounts\": 1,\n" + + " \"num_claimable_balances\": 0,\n" + + " \"num_liquidity_pools\": 0,\n" + + " \"num_contracts\": 2,\n" + + " \"amount\": \"200.0000000\",\n" + " \"accounts\": {\n" + " \"authorized\": 1,\n" + " \"authorized_to_maintain_liabilities\": 0,\n" + " \"unauthorized\": 0\n" + " },\n" - + " \"balances\": {\n" - + " \"authorized\": \"0.0000000\",\n" - + " \"authorized_to_maintain_liabilities\": \"0.0000000\",\n" - + " \"unauthorized\": \"0.0000000\"\n" - + " },\n" + " \"claimable_balances_amount\": \"0.0000000\",\n" - + " \"num_claimable_balances\": 0,\n" - + " \"amount\": \"0.0000000\",\n" - + " \"num_accounts\": 1,\n" - + " \"flags\": {\n" - + " \"auth_required\": true,\n" - + " \"auth_revocable\": false\n" - + " }\n" - + " },\n" - + " {\n" - + " \"_links\": {\n" - + " \"toml\": {\n" - + " \"href\": \"\"\n" - + " }\n" - + " },\n" - + " \"asset_type\": \"credit_alphanum12\",\n" - + " \"asset_code\": \"9HORIZONS\",\n" - + " \"asset_issuer\": \"GB2HXY7UEDCSHOWZ4553QFGFILNU73OFS2P4HU5IB3UUU66TWPBPVTGW\",\n" - + " \"paging_token\": \"9HORIZONS_GB2HXY7UEDCSHOWZ4553QFGFILNU73OFS2P4HU5IB3UUU66TWPBPVTGW_credit_alphanum12\",\n" - + " \"accounts\": {\n" - + " \"authorized\": 3,\n" - + " \"authorized_to_maintain_liabilities\": 0,\n" - + " \"unauthorized\": 0\n" - + " },\n" + + " \"liquidity_pools_amount\": \"0.0000000\",\n" + + " \"contracts_amount\": \"25.1230000\",\n" + " \"balances\": {\n" - + " \"authorized\": \"1000000.0000000\",\n" + + " \"authorized\": \"200.0000000\",\n" + " \"authorized_to_maintain_liabilities\": \"0.0000000\",\n" + " \"unauthorized\": \"0.0000000\"\n" + " },\n" - + " \"claimable_balances_amount\": \"0.0000000\",\n" - + " \"num_claimable_balances\": 0,\n" - + " \"amount\": \"1000000.0000000\",\n" - + " \"num_accounts\": 3,\n" + " \"flags\": {\n" - + " \"auth_required\": false,\n" - + " \"auth_revocable\": false\n" + + " \"auth_required\": true,\n" + + " \"auth_revocable\": false,\n" + + " \"auth_immutable\": false,\n" + + " \"auth_clawback_enabled\": false\n" + " }\n" + " },\n" + " {\n" @@ -124,55 +107,32 @@ public void testDeserialize() { + " }\n" + " },\n" + " \"asset_type\": \"credit_alphanum4\",\n" - + " \"asset_code\": \"AIR\",\n" - + " \"asset_issuer\": \"GB2SQ74JCS6F4MVDU4BF4L4S4Z5Z36ABOTP6DF5JJOFGFE3ETZAUVUQK\",\n" - + " \"paging_token\": \"AIR_GB2SQ74JCS6F4MVDU4BF4L4S4Z5Z36ABOTP6DF5JJOFGFE3ETZAUVUQK_credit_alphanum4\",\n" - + " \"accounts\": {\n" - + " \"authorized\": 2,\n" - + " \"authorized_to_maintain_liabilities\": 0,\n" - + " \"unauthorized\": 0\n" - + " },\n" - + " \"balances\": {\n" - + " \"authorized\": \"100000000000.0000000\",\n" - + " \"authorized_to_maintain_liabilities\": \"0.0000000\",\n" - + " \"unauthorized\": \"0.0000000\"\n" - + " },\n" - + " \"claimable_balances_amount\": \"0.0000000\",\n" + + " \"asset_code\": \"Fsdk\",\n" + + " \"asset_issuer\": \"GAPMSH3ZYNL4JB4OBKESIHWK3WZ4IFV4TDNHJRUNI62RT56I7RVUSBWI\",\n" + + " \"paging_token\": \"Fsdk_GAPMSH3ZYNL4JB4OBKESIHWK3WZ4IFV4TDNHJRUNI62RT56I7RVUSBWI_credit_alphanum4\",\n" + + " \"num_accounts\": 1,\n" + " \"num_claimable_balances\": 0,\n" - + " \"amount\": \"100000000000.0000000\",\n" - + " \"num_accounts\": 2,\n" - + " \"flags\": {\n" - + " \"auth_required\": false,\n" - + " \"auth_revocable\": false\n" - + " }\n" - + " },\n" - + " {\n" - + " \"_links\": {\n" - + " \"toml\": {\n" - + " \"href\": \"\"\n" - + " }\n" - + " },\n" - + " \"asset_type\": \"credit_alphanum12\",\n" - + " \"asset_code\": \"AlambLedgerS\",\n" - + " \"asset_issuer\": \"GCMXATSZBEYTNPFQXHFQXUYXOTHA4HA5L2YZEKKOVGYWTUT24KIHECG3\",\n" - + " \"paging_token\": \"AlambLedgerS_GCMXATSZBEYTNPFQXHFQXUYXOTHA4HA5L2YZEKKOVGYWTUT24KIHECG3_credit_alphanum12\",\n" + + " \"num_liquidity_pools\": 0,\n" + + " \"num_contracts\": 0,\n" + + " \"amount\": \"200.0000000\",\n" + " \"accounts\": {\n" - + " \"authorized\": 0,\n" + + " \"authorized\": 1,\n" + " \"authorized_to_maintain_liabilities\": 0,\n" + " \"unauthorized\": 0\n" + " },\n" + + " \"claimable_balances_amount\": \"0.0000000\",\n" + + " \"liquidity_pools_amount\": \"0.0000000\",\n" + + " \"contracts_amount\": \"0.0000000\",\n" + " \"balances\": {\n" - + " \"authorized\": \"0.0000000\",\n" + + " \"authorized\": \"200.0000000\",\n" + " \"authorized_to_maintain_liabilities\": \"0.0000000\",\n" + " \"unauthorized\": \"0.0000000\"\n" + " },\n" - + " \"claimable_balances_amount\": \"0.0000000\",\n" - + " \"num_claimable_balances\": 0,\n" - + " \"amount\": \"0.0000000\",\n" - + " \"num_accounts\": 0,\n" + " \"flags\": {\n" - + " \"auth_required\": false,\n" - + " \"auth_revocable\": false\n" + + " \"auth_required\": true,\n" + + " \"auth_revocable\": false,\n" + + " \"auth_immutable\": false,\n" + + " \"auth_clawback_enabled\": false\n" + " }\n" + " },\n" + " {\n" @@ -182,26 +142,33 @@ public void testDeserialize() { + " }\n" + " },\n" + " \"asset_type\": \"credit_alphanum4\",\n" - + " \"asset_code\": \"AMO\",\n" - + " \"asset_issuer\": \"GBOMFBZG5PWUXDIIW5ITVRVEL6YCIC6ZDXLNBH33BNPCX3D7AXDCDKHF\",\n" - + " \"paging_token\": \"AMO_GBOMFBZG5PWUXDIIW5ITVRVEL6YCIC6ZDXLNBH33BNPCX3D7AXDCDKHF_credit_alphanum4\",\n" + + " \"asset_code\": \"Fsdk\",\n" + + " \"asset_issuer\": \"GAZGEVSF73ZUCD7FIZFZK7NRZHYB3TGKLVZIWBD7XPKFF6HKUHKXZ4R4\",\n" + + " \"paging_token\": \"Fsdk_GAZGEVSF73ZUCD7FIZFZK7NRZHYB3TGKLVZIWBD7XPKFF6HKUHKXZ4R4_credit_alphanum4\",\n" + + " \"contract_id\": \"CCENU3B5K7TXRXRGSF3R32R4FTANRK3KRPLPMN6PDNCKA6MW7B5JOXBJ\",\n" + + " \"num_accounts\": 1,\n" + + " \"num_claimable_balances\": 0,\n" + + " \"num_liquidity_pools\": 0,\n" + + " \"num_contracts\": 0,\n" + + " \"amount\": \"200.0000000\",\n" + " \"accounts\": {\n" + " \"authorized\": 1,\n" + " \"authorized_to_maintain_liabilities\": 0,\n" + " \"unauthorized\": 0\n" + " },\n" + + " \"claimable_balances_amount\": \"0.0000000\",\n" + + " \"liquidity_pools_amount\": \"0.0000000\",\n" + + " \"contracts_amount\": \"0.0000000\",\n" + " \"balances\": {\n" - + " \"authorized\": \"10000000.0000000\",\n" + + " \"authorized\": \"200.0000000\",\n" + " \"authorized_to_maintain_liabilities\": \"0.0000000\",\n" + " \"unauthorized\": \"0.0000000\"\n" + " },\n" - + " \"claimable_balances_amount\": \"0.0000000\",\n" - + " \"num_claimable_balances\": 0,\n" - + " \"amount\": \"10000000.0000000\",\n" - + " \"num_accounts\": 1,\n" + " \"flags\": {\n" + " \"auth_required\": false,\n" - + " \"auth_revocable\": false\n" + + " \"auth_revocable\": false,\n" + + " \"auth_immutable\": false,\n" + + " \"auth_clawback_enabled\": false\n" + " }\n" + " },\n" + " {\n" @@ -211,145 +178,72 @@ public void testDeserialize() { + " }\n" + " },\n" + " \"asset_type\": \"credit_alphanum4\",\n" - + " \"asset_code\": \"AMO\",\n" - + " \"asset_issuer\": \"GDIAIZ7S7L2OBEQBH62KE7IWXK76XA7ES7XCH7JCPXQGV7VB3V6VETOX\",\n" - + " \"paging_token\": \"AMO_GDIAIZ7S7L2OBEQBH62KE7IWXK76XA7ES7XCH7JCPXQGV7VB3V6VETOX_credit_alphanum4\",\n" + + " \"asset_code\": \"Fsdk\",\n" + + " \"asset_issuer\": \"GBENWRA65WGOL3OK7DMQXQJWXSO34WQRP5QKFW4LYLCPG5BLFVEMYPF5\",\n" + + " \"paging_token\": \"Fsdk_GBENWRA65WGOL3OK7DMQXQJWXSO34WQRP5QKFW4LYLCPG5BLFVEMYPF5_credit_alphanum4\",\n" + + " \"contract_id\": \"CC7GMZZM4YJK32V6ZZOWELQMBH7BTKVF52PYWFUR7GGBFAVEAZPQTUJA\",\n" + + " \"num_accounts\": 1,\n" + + " \"num_claimable_balances\": 0,\n" + + " \"num_liquidity_pools\": 0,\n" + + " \"num_contracts\": 0,\n" + + " \"amount\": \"200.0000000\",\n" + " \"accounts\": {\n" + " \"authorized\": 1,\n" + " \"authorized_to_maintain_liabilities\": 0,\n" + " \"unauthorized\": 0\n" + " },\n" - + " \"balances\": {\n" - + " \"authorized\": \"0.0000000\",\n" - + " \"authorized_to_maintain_liabilities\": \"0.0000000\",\n" - + " \"unauthorized\": \"0.0000000\"\n" - + " },\n" + " \"claimable_balances_amount\": \"0.0000000\",\n" - + " \"num_claimable_balances\": 0,\n" - + " \"amount\": \"0.0000000\",\n" - + " \"num_accounts\": 1,\n" - + " \"flags\": {\n" - + " \"auth_required\": false,\n" - + " \"auth_revocable\": false\n" - + " }\n" - + " },\n" - + " {\n" - + " \"_links\": {\n" - + " \"toml\": {\n" - + " \"href\": \"\"\n" - + " }\n" - + " },\n" - + " \"asset_type\": \"credit_alphanum4\",\n" - + " \"asset_code\": \"ASD\",\n" - + " \"asset_issuer\": \"GAOMRMILWSX7UXZMYC4X7B7BVJXORYV36XUK3EURVJF7DA6B77ABFVOJ\",\n" - + " \"paging_token\": \"ASD_GAOMRMILWSX7UXZMYC4X7B7BVJXORYV36XUK3EURVJF7DA6B77ABFVOJ_credit_alphanum4\",\n" - + " \"accounts\": {\n" - + " \"authorized\": 0,\n" - + " \"authorized_to_maintain_liabilities\": 0,\n" - + " \"unauthorized\": 0\n" - + " },\n" + + " \"liquidity_pools_amount\": \"0.0000000\",\n" + + " \"contracts_amount\": \"0.0000000\",\n" + " \"balances\": {\n" - + " \"authorized\": \"0.0000000\",\n" + + " \"authorized\": \"200.0000000\",\n" + " \"authorized_to_maintain_liabilities\": \"0.0000000\",\n" + " \"unauthorized\": \"0.0000000\"\n" + " },\n" - + " \"claimable_balances_amount\": \"0.0000000\",\n" - + " \"num_claimable_balances\": 0,\n" - + " \"amount\": \"0.0000000\",\n" - + " \"num_accounts\": 0,\n" + " \"flags\": {\n" + " \"auth_required\": false,\n" - + " \"auth_revocable\": false\n" + + " \"auth_revocable\": false,\n" + + " \"auth_immutable\": false,\n" + + " \"auth_clawback_enabled\": false\n" + " }\n" + " },\n" + " {\n" + " \"_links\": {\n" + " \"toml\": {\n" - + " \"href\": \"https://mystellar.tools/.well-known/stellar.toml\"\n" + + " \"href\": \"\"\n" + " }\n" + " },\n" + " \"asset_type\": \"credit_alphanum4\",\n" - + " \"asset_code\": \"ASD\",\n" - + " \"asset_issuer\": \"GDP4SJE5Y5ODX627DO2F7ZNBAPVXRFHKKR3W4UJ6I4XMW3S3OH2XRWYD\",\n" - + " \"paging_token\": \"ASD_GDP4SJE5Y5ODX627DO2F7ZNBAPVXRFHKKR3W4UJ6I4XMW3S3OH2XRWYD_credit_alphanum4\",\n" - + " \"accounts\": {\n" - + " \"authorized\": 0,\n" - + " \"authorized_to_maintain_liabilities\": 0,\n" - + " \"unauthorized\": 0\n" - + " },\n" - + " \"balances\": {\n" - + " \"authorized\": \"0.0000000\",\n" - + " \"authorized_to_maintain_liabilities\": \"0.0000000\",\n" - + " \"unauthorized\": \"0.0000000\"\n" - + " },\n" - + " \"claimable_balances_amount\": \"0.0000000\",\n" + + " \"asset_code\": \"Fsdk\",\n" + + " \"asset_issuer\": \"GBP5VJVRLEZWRMOARGWIPZKV26PBR7SQPHC43ZNJNTATFDOPTOQB4P7I\",\n" + + " \"paging_token\": \"Fsdk_GBP5VJVRLEZWRMOARGWIPZKV26PBR7SQPHC43ZNJNTATFDOPTOQB4P7I_credit_alphanum4\",\n" + + " \"contract_id\": \"CC52PADO3R5DBLXXEBVTKWOKZ7TRBLTPSJV6WQT62JL3MRKDWOJDTT6J\",\n" + + " \"num_accounts\": 1,\n" + " \"num_claimable_balances\": 0,\n" - + " \"amount\": \"0.0000000\",\n" - + " \"num_accounts\": 0,\n" - + " \"flags\": {\n" - + " \"auth_required\": false,\n" - + " \"auth_revocable\": false\n" - + " }\n" - + " },\n" - + " {\n" - + " \"_links\": {\n" - + " \"toml\": {\n" - + " \"href\": \"\"\n" - + " }\n" - + " },\n" - + " \"asset_type\": \"credit_alphanum12\",\n" - + " \"asset_code\": \"AsrtoDollar\",\n" - + " \"asset_issuer\": \"GBPGO557IQWSWOIKHWB7YJ5QIBWVF4QS6SPGWT5YBGDUPE6QKOD7RR7S\",\n" - + " \"paging_token\": \"AsrtoDollar_GBPGO557IQWSWOIKHWB7YJ5QIBWVF4QS6SPGWT5YBGDUPE6QKOD7RR7S_credit_alphanum12\",\n" + + " \"num_liquidity_pools\": 0,\n" + + " \"num_contracts\": 0,\n" + + " \"amount\": \"200.0000000\",\n" + " \"accounts\": {\n" - + " \"authorized\": 0,\n" + + " \"authorized\": 1,\n" + " \"authorized_to_maintain_liabilities\": 0,\n" + " \"unauthorized\": 0\n" + " },\n" - + " \"balances\": {\n" - + " \"authorized\": \"0.0000000\",\n" - + " \"authorized_to_maintain_liabilities\": \"0.0000000\",\n" - + " \"unauthorized\": \"0.0000000\"\n" - + " },\n" + " \"claimable_balances_amount\": \"0.0000000\",\n" - + " \"num_claimable_balances\": 0,\n" - + " \"amount\": \"0.0000000\",\n" - + " \"num_accounts\": 0,\n" - + " \"flags\": {\n" - + " \"auth_required\": false,\n" - + " \"auth_revocable\": false\n" - + " }\n" - + " },\n" - + " {\n" - + " \"_links\": {\n" - + " \"toml\": {\n" - + " \"href\": \"\"\n" - + " }\n" - + " },\n" - + " \"asset_type\": \"credit_alphanum12\",\n" - + " \"asset_code\": \"AsrtoDollar\",\n" - + " \"asset_issuer\": \"GDJWXY5XUASXNL4ABCONR6T5MOXJ2S4HD6WDNAJDSDKQ4VS3TVUQJEDJ\",\n" - + " \"paging_token\": \"AsrtoDollar_GDJWXY5XUASXNL4ABCONR6T5MOXJ2S4HD6WDNAJDSDKQ4VS3TVUQJEDJ_credit_alphanum12\",\n" - + " \"accounts\": {\n" - + " \"authorized\": 0,\n" - + " \"authorized_to_maintain_liabilities\": 0,\n" - + " \"unauthorized\": 0\n" - + " },\n" + + " \"liquidity_pools_amount\": \"0.0000000\",\n" + + " \"contracts_amount\": \"0.0000000\",\n" + " \"balances\": {\n" - + " \"authorized\": \"0.0000000\",\n" + + " \"authorized\": \"200.0000000\",\n" + " \"authorized_to_maintain_liabilities\": \"0.0000000\",\n" + " \"unauthorized\": \"0.0000000\"\n" + " },\n" - + " \"claimable_balances_amount\": \"0.0000000\",\n" - + " \"num_claimable_balances\": 0,\n" - + " \"amount\": \"0.0000000\",\n" - + " \"num_accounts\": 0,\n" + " \"flags\": {\n" + " \"auth_required\": false,\n" - + " \"auth_revocable\": false\n" + + " \"auth_revocable\": false,\n" + + " \"auth_immutable\": false,\n" + + " \"auth_clawback_enabled\": false\n" + " }\n" + " }\n" + " ]\n" + " }\n" - + "}"; + + "}\n"; } From fef2d79433973cd506e6e7ed70bc0dca6a383b21 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Wed, 26 Jul 2023 01:08:23 +0800 Subject: [PATCH 02/29] Add support for InvokeHostFunctionOperation & add `Address` class. (#481) --- readme.md | 2 +- src/main/java/org/stellar/sdk/Address.java | 170 +++++ .../sdk/InvokeHostFunctionOperation.java | 62 ++ src/main/java/org/stellar/sdk/KeyPair.java | 7 + src/main/java/org/stellar/sdk/Operation.java | 29 +- src/main/java/org/stellar/sdk/StrKey.java | 99 ++- .../java/org/stellar/sdk/Transaction.java | 65 +- .../org/stellar/sdk/TransactionBuilder.java | 25 + src/main/java/org/stellar/sdk/Util.java | 38 + .../sdk/responses/OperationDeserializer.java | 2 + .../InvokeHostFunctionOperationResponse.java | 165 +++++ .../org/stellar/sdk/xdr/AccountEntry.java | 24 +- .../sdk/xdr/AccountEntryExtensionV1.java | 8 +- .../sdk/xdr/AccountEntryExtensionV2.java | 12 +- .../sdk/xdr/AccountEntryExtensionV3.java | 8 +- .../org/stellar/sdk/xdr/AccountFlags.java | 2 + .../java/org/stellar/sdk/xdr/AccountID.java | 2 + .../stellar/sdk/xdr/AccountMergeResult.java | 28 +- .../sdk/xdr/AccountMergeResultCode.java | 2 + .../org/stellar/sdk/xdr/AllowTrustOp.java | 8 +- .../org/stellar/sdk/xdr/AllowTrustResult.java | 23 +- .../stellar/sdk/xdr/AllowTrustResultCode.java | 2 + .../java/org/stellar/sdk/xdr/AlphaNum12.java | 6 +- .../java/org/stellar/sdk/xdr/AlphaNum4.java | 6 +- src/main/java/org/stellar/sdk/xdr/Asset.java | 6 +- .../java/org/stellar/sdk/xdr/AssetCode.java | 6 +- .../java/org/stellar/sdk/xdr/AssetCode12.java | 2 + .../java/org/stellar/sdk/xdr/AssetCode4.java | 2 + .../java/org/stellar/sdk/xdr/AssetType.java | 2 + src/main/java/org/stellar/sdk/xdr/Auth.java | 32 +- .../java/org/stellar/sdk/xdr/AuthCert.java | 8 +- .../stellar/sdk/xdr/AuthenticatedMessage.java | 10 +- .../xdr/BeginSponsoringFutureReservesOp.java | 4 +- .../BeginSponsoringFutureReservesResult.java | 14 +- ...ginSponsoringFutureReservesResultCode.java | 2 + .../java/org/stellar/sdk/xdr/BucketEntry.java | 8 +- .../org/stellar/sdk/xdr/BucketEntryType.java | 2 + .../org/stellar/sdk/xdr/BucketMetadata.java | 6 +- .../sdk/xdr/BumpFootprintExpirationOp.java | 98 +++ .../xdr/BumpFootprintExpirationResult.java | 101 +++ .../BumpFootprintExpirationResultCode.java | 61 ++ .../org/stellar/sdk/xdr/BumpSequenceOp.java | 4 +- .../stellar/sdk/xdr/BumpSequenceResult.java | 8 +- .../sdk/xdr/BumpSequenceResultCode.java | 2 + .../org/stellar/sdk/xdr/ChangeTrustAsset.java | 8 +- .../org/stellar/sdk/xdr/ChangeTrustOp.java | 6 +- .../stellar/sdk/xdr/ChangeTrustResult.java | 29 +- .../sdk/xdr/ChangeTrustResultCode.java | 2 + .../java/org/stellar/sdk/xdr/ClaimAtom.java | 8 +- .../org/stellar/sdk/xdr/ClaimAtomType.java | 2 + .../sdk/xdr/ClaimClaimableBalanceOp.java | 4 +- .../sdk/xdr/ClaimClaimableBalanceResult.java | 20 +- .../xdr/ClaimClaimableBalanceResultCode.java | 3 +- .../stellar/sdk/xdr/ClaimLiquidityAtom.java | 12 +- .../org/stellar/sdk/xdr/ClaimOfferAtom.java | 14 +- .../org/stellar/sdk/xdr/ClaimOfferAtomV0.java | 14 +- .../org/stellar/sdk/xdr/ClaimPredicate.java | 12 +- .../stellar/sdk/xdr/ClaimPredicateType.java | 2 + .../sdk/xdr/ClaimableBalanceEntry.java | 14 +- .../xdr/ClaimableBalanceEntryExtensionV1.java | 6 +- .../sdk/xdr/ClaimableBalanceFlags.java | 2 + .../stellar/sdk/xdr/ClaimableBalanceID.java | 4 +- .../sdk/xdr/ClaimableBalanceIDType.java | 2 + .../java/org/stellar/sdk/xdr/Claimant.java | 8 +- .../org/stellar/sdk/xdr/ClaimantType.java | 2 + .../sdk/xdr/ClawbackClaimableBalanceOp.java | 4 +- .../xdr/ClawbackClaimableBalanceResult.java | 14 +- .../ClawbackClaimableBalanceResultCode.java | 2 + .../java/org/stellar/sdk/xdr/ClawbackOp.java | 8 +- .../org/stellar/sdk/xdr/ClawbackResult.java | 17 +- .../stellar/sdk/xdr/ClawbackResultCode.java | 2 + .../xdr/ConfigSettingContractBandwidthV0.java | 127 ++++ .../xdr/ConfigSettingContractComputeV0.java | 154 ++++ ...ConfigSettingContractExecutionLanesV0.java | 81 +++ ...ConfigSettingContractHistoricalDataV0.java | 80 +++ .../ConfigSettingContractLedgerCostV0.java | 427 +++++++++++ .../xdr/ConfigSettingContractMetaDataV0.java | 103 +++ .../stellar/sdk/xdr/ConfigSettingEntry.java | 453 ++++++++++++ .../org/stellar/sdk/xdr/ConfigSettingID.java | 96 +++ .../org/stellar/sdk/xdr/ConfigUpgradeSet.java | 83 +++ .../stellar/sdk/xdr/ConfigUpgradeSetKey.java | 97 +++ .../java/org/stellar/sdk/xdr/Constants.java | 27 + .../stellar/sdk/xdr/ContractCodeEntry.java | 245 +++++++ .../sdk/xdr/ContractCostParamEntry.java | 120 ++++ .../stellar/sdk/xdr/ContractCostParams.java | 71 ++ .../org/stellar/sdk/xdr/ContractCostType.java | 203 ++++++ .../sdk/xdr/ContractDataDurability.java | 52 ++ .../stellar/sdk/xdr/ContractDataEntry.java | 345 +++++++++ .../stellar/sdk/xdr/ContractDataFlags.java | 50 ++ .../sdk/xdr/ContractEntryBodyType.java | 52 ++ .../org/stellar/sdk/xdr/ContractEvent.java | 327 +++++++++ .../stellar/sdk/xdr/ContractEventType.java | 57 ++ .../stellar/sdk/xdr/ContractExecutable.java | 113 +++ .../sdk/xdr/ContractExecutableType.java | 53 ++ .../stellar/sdk/xdr/ContractIDPreimage.java | 220 ++++++ .../sdk/xdr/ContractIDPreimageType.java | 53 ++ .../org/stellar/sdk/xdr/CreateAccountOp.java | 6 +- .../stellar/sdk/xdr/CreateAccountResult.java | 17 +- .../sdk/xdr/CreateAccountResultCode.java | 2 + .../sdk/xdr/CreateClaimableBalanceOp.java | 8 +- .../sdk/xdr/CreateClaimableBalanceResult.java | 22 +- .../xdr/CreateClaimableBalanceResultCode.java | 2 + .../stellar/sdk/xdr/CreateContractArgs.java | 97 +++ .../stellar/sdk/xdr/CreatePassiveOfferOp.java | 79 --- .../sdk/xdr/CreatePassiveSellOfferOp.java | 10 +- .../org/stellar/sdk/xdr/CryptoKeyType.java | 2 + .../org/stellar/sdk/xdr/Curve25519Public.java | 4 +- .../org/stellar/sdk/xdr/Curve25519Secret.java | 4 +- .../java/org/stellar/sdk/xdr/DataEntry.java | 10 +- .../java/org/stellar/sdk/xdr/DataValue.java | 2 + .../stellar/sdk/xdr/DecoratedSignature.java | 6 +- .../org/stellar/sdk/xdr/DiagnosticEvent.java | 97 +++ .../java/org/stellar/sdk/xdr/DontHave.java | 6 +- .../java/org/stellar/sdk/xdr/Duration.java | 2 + .../org/stellar/sdk/xdr/EncryptedBody.java | 2 + .../EndSponsoringFutureReservesResult.java | 8 +- ...EndSponsoringFutureReservesResultCode.java | 2 + .../org/stellar/sdk/xdr/EnvelopeType.java | 12 +- src/main/java/org/stellar/sdk/xdr/Error.java | 6 +- .../java/org/stellar/sdk/xdr/ErrorCode.java | 2 + .../org/stellar/sdk/xdr/ExtensionPoint.java | 2 + .../stellar/sdk/xdr/FeeBumpTransaction.java | 12 +- .../sdk/xdr/FeeBumpTransactionEnvelope.java | 6 +- .../java/org/stellar/sdk/xdr/FloodAdvert.java | 76 ++ .../java/org/stellar/sdk/xdr/FloodDemand.java | 76 ++ .../sdk/xdr/GeneralizedTransactionSet.java | 109 +++ src/main/java/org/stellar/sdk/xdr/Hash.java | 2 + .../org/stellar/sdk/xdr/HashIDPreimage.java | 295 +++++++- src/main/java/org/stellar/sdk/xdr/Hello.java | 20 +- .../org/stellar/sdk/xdr/HmacSha256Key.java | 4 +- .../org/stellar/sdk/xdr/HmacSha256Mac.java | 4 +- .../org/stellar/sdk/xdr/HostFunction.java | 166 +++++ .../org/stellar/sdk/xdr/HostFunctionType.java | 56 ++ .../java/org/stellar/sdk/xdr/IPAddrType.java | 2 + .../org/stellar/sdk/xdr/InflationPayout.java | 6 +- .../org/stellar/sdk/xdr/InflationResult.java | 10 +- .../stellar/sdk/xdr/InflationResultCode.java | 2 + .../sdk/xdr/InnerTransactionResult.java | 13 +- .../sdk/xdr/InnerTransactionResultPair.java | 6 +- .../java/org/stellar/sdk/xdr/Int128Parts.java | 95 +++ .../java/org/stellar/sdk/xdr/Int256Parts.java | 138 ++++ src/main/java/org/stellar/sdk/xdr/Int32.java | 2 + src/main/java/org/stellar/sdk/xdr/Int64.java | 2 + .../stellar/sdk/xdr/InvokeHostFunctionOp.java | 109 +++ .../sdk/xdr/InvokeHostFunctionResult.java | 123 ++++ .../sdk/xdr/InvokeHostFunctionResultCode.java | 68 ++ .../InvokeHostFunctionSuccessPreImage.java | 110 +++ .../org/stellar/sdk/xdr/LedgerBounds.java | 6 +- .../org/stellar/sdk/xdr/LedgerCloseMeta.java | 61 +- .../stellar/sdk/xdr/LedgerCloseMetaV0.java | 12 +- .../stellar/sdk/xdr/LedgerCloseMetaV1.java | 199 ++++++ .../stellar/sdk/xdr/LedgerCloseMetaV2.java | 318 +++++++++ .../sdk/xdr/LedgerCloseValueSignature.java | 6 +- .../java/org/stellar/sdk/xdr/LedgerEntry.java | 103 ++- .../stellar/sdk/xdr/LedgerEntryChange.java | 10 +- .../sdk/xdr/LedgerEntryChangeType.java | 2 + .../stellar/sdk/xdr/LedgerEntryChanges.java | 2 + .../sdk/xdr/LedgerEntryExtensionV1.java | 6 +- .../org/stellar/sdk/xdr/LedgerEntryType.java | 16 +- .../org/stellar/sdk/xdr/LedgerFootprint.java | 114 +++ .../org/stellar/sdk/xdr/LedgerHeader.java | 34 +- .../sdk/xdr/LedgerHeaderExtensionV1.java | 6 +- .../stellar/sdk/xdr/LedgerHeaderFlags.java | 20 +- .../sdk/xdr/LedgerHeaderHistoryEntry.java | 8 +- .../java/org/stellar/sdk/xdr/LedgerKey.java | 385 +++++++++- .../stellar/sdk/xdr/LedgerSCPMessages.java | 6 +- .../org/stellar/sdk/xdr/LedgerUpgrade.java | 39 +- .../stellar/sdk/xdr/LedgerUpgradeType.java | 8 +- .../java/org/stellar/sdk/xdr/Liabilities.java | 6 +- ...iquidityPoolConstantProductParameters.java | 8 +- .../sdk/xdr/LiquidityPoolDepositOp.java | 12 +- .../sdk/xdr/LiquidityPoolDepositResult.java | 26 +- .../xdr/LiquidityPoolDepositResultCode.java | 2 + .../stellar/sdk/xdr/LiquidityPoolEntry.java | 18 +- .../sdk/xdr/LiquidityPoolParameters.java | 4 +- .../stellar/sdk/xdr/LiquidityPoolType.java | 2 + .../sdk/xdr/LiquidityPoolWithdrawOp.java | 10 +- .../sdk/xdr/LiquidityPoolWithdrawResult.java | 20 +- .../xdr/LiquidityPoolWithdrawResultCode.java | 2 + .../org/stellar/sdk/xdr/ManageBuyOfferOp.java | 12 +- .../stellar/sdk/xdr/ManageBuyOfferResult.java | 43 +- .../sdk/xdr/ManageBuyOfferResultCode.java | 2 + .../org/stellar/sdk/xdr/ManageDataOp.java | 6 +- .../org/stellar/sdk/xdr/ManageDataResult.java | 17 +- .../stellar/sdk/xdr/ManageDataResultCode.java | 2 + .../stellar/sdk/xdr/ManageOfferEffect.java | 2 + .../org/stellar/sdk/xdr/ManageOfferOp.java | 93 --- .../stellar/sdk/xdr/ManageOfferResult.java | 67 -- .../sdk/xdr/ManageOfferResultCode.java | 96 --- .../sdk/xdr/ManageOfferSuccessResult.java | 14 +- .../stellar/sdk/xdr/ManageSellOfferOp.java | 12 +- .../sdk/xdr/ManageSellOfferResult.java | 43 +- .../sdk/xdr/ManageSellOfferResultCode.java | 2 + src/main/java/org/stellar/sdk/xdr/Memo.java | 10 +- .../java/org/stellar/sdk/xdr/MemoType.java | 2 + .../java/org/stellar/sdk/xdr/MessageType.java | 21 +- .../org/stellar/sdk/xdr/MuxedAccount.java | 10 +- src/main/java/org/stellar/sdk/xdr/NodeID.java | 2 + .../java/org/stellar/sdk/xdr/OfferEntry.java | 18 +- .../org/stellar/sdk/xdr/OfferEntryFlags.java | 2 + .../java/org/stellar/sdk/xdr/Operation.java | 132 +++- .../java/org/stellar/sdk/xdr/OperationID.java | 384 ---------- .../org/stellar/sdk/xdr/OperationMeta.java | 4 +- .../org/stellar/sdk/xdr/OperationResult.java | 159 ++++- .../stellar/sdk/xdr/OperationResultCode.java | 2 + .../org/stellar/sdk/xdr/OperationType.java | 16 +- .../stellar/sdk/xdr/PathPaymentResult.java | 171 ----- .../sdk/xdr/PathPaymentResultCode.java | 93 --- .../sdk/xdr/PathPaymentStrictReceiveOp.java | 14 +- .../xdr/PathPaymentStrictReceiveResult.java | 49 +- .../PathPaymentStrictReceiveResultCode.java | 2 + .../sdk/xdr/PathPaymentStrictSendOp.java | 14 +- .../sdk/xdr/PathPaymentStrictSendResult.java | 49 +- .../xdr/PathPaymentStrictSendResultCode.java | 2 + .../java/org/stellar/sdk/xdr/PaymentOp.java | 8 +- .../org/stellar/sdk/xdr/PaymentResult.java | 32 +- .../stellar/sdk/xdr/PaymentResultCode.java | 2 + .../java/org/stellar/sdk/xdr/PeerAddress.java | 12 +- .../org/stellar/sdk/xdr/PeerStatList.java | 2 + .../java/org/stellar/sdk/xdr/PeerStats.java | 32 +- .../stellar/sdk/xdr/PersistedSCPState.java | 134 ++++ .../stellar/sdk/xdr/PersistedSCPStateV0.java | 147 ++++ .../stellar/sdk/xdr/PersistedSCPStateV1.java | 116 +++ src/main/java/org/stellar/sdk/xdr/PoolID.java | 2 + .../org/stellar/sdk/xdr/PreconditionType.java | 2 + .../org/stellar/sdk/xdr/Preconditions.java | 6 +- .../org/stellar/sdk/xdr/PreconditionsV2.java | 14 +- src/main/java/org/stellar/sdk/xdr/Price.java | 6 +- .../java/org/stellar/sdk/xdr/PublicKey.java | 4 +- .../org/stellar/sdk/xdr/PublicKeyType.java | 2 + .../stellar/sdk/xdr/RestoreFootprintOp.java | 76 ++ .../sdk/xdr/RestoreFootprintResult.java | 98 +++ .../sdk/xdr/RestoreFootprintResultCode.java | 60 ++ .../stellar/sdk/xdr/RevokeSponsorshipOp.java | 10 +- .../sdk/xdr/RevokeSponsorshipResult.java | 20 +- .../sdk/xdr/RevokeSponsorshipResultCode.java | 2 + .../sdk/xdr/RevokeSponsorshipType.java | 2 + .../java/org/stellar/sdk/xdr/SCAddress.java | 134 ++++ .../org/stellar/sdk/xdr/SCAddressType.java | 52 ++ .../java/org/stellar/sdk/xdr/SCBytes.java | 65 ++ .../stellar/sdk/xdr/SCContractInstance.java | 104 +++ .../org/stellar/sdk/xdr/SCEnvMetaEntry.java | 108 +++ .../org/stellar/sdk/xdr/SCEnvMetaKind.java | 48 ++ .../java/org/stellar/sdk/xdr/SCError.java | 95 +++ .../java/org/stellar/sdk/xdr/SCErrorCode.java | 84 +++ .../java/org/stellar/sdk/xdr/SCErrorType.java | 84 +++ src/main/java/org/stellar/sdk/xdr/SCMap.java | 69 ++ .../java/org/stellar/sdk/xdr/SCMapEntry.java | 96 +++ .../java/org/stellar/sdk/xdr/SCMetaEntry.java | 107 +++ .../java/org/stellar/sdk/xdr/SCMetaKind.java | 48 ++ .../java/org/stellar/sdk/xdr/SCMetaV0.java | 96 +++ .../java/org/stellar/sdk/xdr/SCNonceKey.java | 75 ++ .../java/org/stellar/sdk/xdr/SCPBallot.java | 6 +- .../java/org/stellar/sdk/xdr/SCPEnvelope.java | 6 +- .../org/stellar/sdk/xdr/SCPHistoryEntry.java | 4 +- .../stellar/sdk/xdr/SCPHistoryEntryV0.java | 6 +- .../org/stellar/sdk/xdr/SCPNomination.java | 8 +- .../org/stellar/sdk/xdr/SCPQuorumSet.java | 8 +- .../org/stellar/sdk/xdr/SCPStatement.java | 44 +- .../org/stellar/sdk/xdr/SCPStatementType.java | 2 + .../java/org/stellar/sdk/xdr/SCSpecEntry.java | 218 ++++++ .../org/stellar/sdk/xdr/SCSpecEntryKind.java | 64 ++ .../sdk/xdr/SCSpecFunctionInputV0.java | 119 ++++ .../org/stellar/sdk/xdr/SCSpecFunctionV0.java | 157 +++++ .../java/org/stellar/sdk/xdr/SCSpecType.java | 154 ++++ .../org/stellar/sdk/xdr/SCSpecTypeBytesN.java | 76 ++ .../org/stellar/sdk/xdr/SCSpecTypeDef.java | 356 ++++++++++ .../org/stellar/sdk/xdr/SCSpecTypeMap.java | 97 +++ .../org/stellar/sdk/xdr/SCSpecTypeOption.java | 76 ++ .../org/stellar/sdk/xdr/SCSpecTypeResult.java | 97 +++ .../org/stellar/sdk/xdr/SCSpecTypeSet.java | 76 ++ .../org/stellar/sdk/xdr/SCSpecTypeTuple.java | 84 +++ .../org/stellar/sdk/xdr/SCSpecTypeUDT.java | 76 ++ .../org/stellar/sdk/xdr/SCSpecTypeVec.java | 76 ++ .../stellar/sdk/xdr/SCSpecUDTEnumCaseV0.java | 119 ++++ .../org/stellar/sdk/xdr/SCSpecUDTEnumV0.java | 148 ++++ .../sdk/xdr/SCSpecUDTErrorEnumCaseV0.java | 119 ++++ .../stellar/sdk/xdr/SCSpecUDTErrorEnumV0.java | 149 ++++ .../sdk/xdr/SCSpecUDTStructFieldV0.java | 119 ++++ .../stellar/sdk/xdr/SCSpecUDTStructV0.java | 148 ++++ .../sdk/xdr/SCSpecUDTUnionCaseTupleV0.java | 128 ++++ .../stellar/sdk/xdr/SCSpecUDTUnionCaseV0.java | 135 ++++ .../sdk/xdr/SCSpecUDTUnionCaseV0Kind.java | 53 ++ .../sdk/xdr/SCSpecUDTUnionCaseVoidV0.java | 97 +++ .../org/stellar/sdk/xdr/SCSpecUDTUnionV0.java | 148 ++++ .../java/org/stellar/sdk/xdr/SCString.java | 62 ++ .../java/org/stellar/sdk/xdr/SCSymbol.java | 62 ++ src/main/java/org/stellar/sdk/xdr/SCVal.java | 664 ++++++++++++++++++ .../java/org/stellar/sdk/xdr/SCValType.java | 162 +++++ src/main/java/org/stellar/sdk/xdr/SCVec.java | 69 ++ .../java/org/stellar/sdk/xdr/SendMore.java | 4 +- .../org/stellar/sdk/xdr/SendMoreExtended.java | 97 +++ .../org/stellar/sdk/xdr/SequenceNumber.java | 2 + .../org/stellar/sdk/xdr/SetOptionsOp.java | 20 +- .../org/stellar/sdk/xdr/SetOptionsResult.java | 35 +- .../stellar/sdk/xdr/SetOptionsResultCode.java | 2 + .../stellar/sdk/xdr/SetTrustLineFlagsOp.java | 10 +- .../sdk/xdr/SetTrustLineFlagsResult.java | 20 +- .../sdk/xdr/SetTrustLineFlagsResultCode.java | 2 + .../java/org/stellar/sdk/xdr/Signature.java | 2 + .../org/stellar/sdk/xdr/SignatureHint.java | 2 + .../sdk/xdr/SignedSurveyRequestMessage.java | 6 +- .../sdk/xdr/SignedSurveyResponseMessage.java | 6 +- src/main/java/org/stellar/sdk/xdr/Signer.java | 6 +- .../java/org/stellar/sdk/xdr/SignerKey.java | 14 +- .../org/stellar/sdk/xdr/SignerKeyType.java | 2 + .../stellar/sdk/xdr/SimplePaymentResult.java | 8 +- .../sdk/xdr/SorobanAddressCredentials.java | 141 ++++ .../sdk/xdr/SorobanAuthorizationEntry.java | 98 +++ .../SorobanAuthorizedContractFunction.java | 122 ++++ .../sdk/xdr/SorobanAuthorizedFunction.java | 137 ++++ .../xdr/SorobanAuthorizedFunctionType.java | 53 ++ .../sdk/xdr/SorobanAuthorizedInvocation.java | 111 +++ .../stellar/sdk/xdr/SorobanCredentials.java | 113 +++ .../sdk/xdr/SorobanCredentialsType.java | 53 ++ .../org/stellar/sdk/xdr/SorobanResources.java | 173 +++++ .../sdk/xdr/SorobanTransactionData.java | 120 ++++ .../sdk/xdr/SorobanTransactionMeta.java | 167 +++++ .../sdk/xdr/SponsorshipDescriptor.java | 2 + .../sdk/xdr/StateExpirationSettings.java | 261 +++++++ .../org/stellar/sdk/xdr/StellarMessage.java | 141 +++- .../org/stellar/sdk/xdr/StellarValue.java | 12 +- .../org/stellar/sdk/xdr/StellarValueType.java | 2 + .../stellar/sdk/xdr/StoredTransactionSet.java | 135 ++++ .../java/org/stellar/sdk/xdr/String32.java | 2 + .../java/org/stellar/sdk/xdr/String64.java | 2 + .../sdk/xdr/SurveyMessageCommandType.java | 2 + .../sdk/xdr/SurveyMessageResponseType.java | 53 ++ .../stellar/sdk/xdr/SurveyRequestMessage.java | 12 +- .../stellar/sdk/xdr/SurveyResponseBody.java | 78 +- .../sdk/xdr/SurveyResponseMessage.java | 12 +- .../org/stellar/sdk/xdr/ThresholdIndexes.java | 2 + .../org/stellar/sdk/xdr/ThresholdIndices.java | 54 -- .../java/org/stellar/sdk/xdr/Thresholds.java | 2 + .../java/org/stellar/sdk/xdr/TimeBounds.java | 6 +- .../java/org/stellar/sdk/xdr/TimePoint.java | 2 + ...eBody.java => TopologyResponseBodyV0.java} | 48 +- .../sdk/xdr/TopologyResponseBodyV1.java | 190 +++++ .../java/org/stellar/sdk/xdr/Transaction.java | 45 +- .../stellar/sdk/xdr/TransactionEnvelope.java | 8 +- .../sdk/xdr/TransactionHistoryEntry.java | 42 +- .../xdr/TransactionHistoryResultEntry.java | 8 +- .../org/stellar/sdk/xdr/TransactionMeta.java | 36 +- .../stellar/sdk/xdr/TransactionMetaV1.java | 6 +- .../stellar/sdk/xdr/TransactionMetaV2.java | 8 +- .../stellar/sdk/xdr/TransactionMetaV3.java | 186 +++++ .../org/stellar/sdk/xdr/TransactionPhase.java | 116 +++ .../stellar/sdk/xdr/TransactionResult.java | 61 +- .../sdk/xdr/TransactionResultCode.java | 9 +- .../sdk/xdr/TransactionResultMeta.java | 8 +- .../sdk/xdr/TransactionResultPair.java | 6 +- .../stellar/sdk/xdr/TransactionResultSet.java | 4 +- .../org/stellar/sdk/xdr/TransactionSet.java | 6 +- .../org/stellar/sdk/xdr/TransactionSetV1.java | 106 +++ .../sdk/xdr/TransactionSignaturePayload.java | 10 +- .../org/stellar/sdk/xdr/TransactionV0.java | 16 +- .../sdk/xdr/TransactionV0Envelope.java | 6 +- .../sdk/xdr/TransactionV1Envelope.java | 6 +- .../org/stellar/sdk/xdr/TrustLineAsset.java | 8 +- .../org/stellar/sdk/xdr/TrustLineEntry.java | 22 +- .../sdk/xdr/TrustLineEntryExtensionV2.java | 6 +- .../org/stellar/sdk/xdr/TrustLineFlags.java | 2 + .../org/stellar/sdk/xdr/TxAdvertVector.java | 70 ++ .../org/stellar/sdk/xdr/TxDemandVector.java | 70 ++ .../org/stellar/sdk/xdr/TxSetComponent.java | 214 ++++++ .../stellar/sdk/xdr/TxSetComponentType.java | 51 ++ .../org/stellar/sdk/xdr/UInt128Parts.java | 95 +++ .../org/stellar/sdk/xdr/UInt256Parts.java | 138 ++++ .../java/org/stellar/sdk/xdr/Uint256.java | 2 + src/main/java/org/stellar/sdk/xdr/Uint32.java | 2 + src/main/java/org/stellar/sdk/xdr/Uint64.java | 2 + .../org/stellar/sdk/xdr/UpgradeEntryMeta.java | 6 +- .../java/org/stellar/sdk/xdr/UpgradeType.java | 2 + src/main/java/org/stellar/sdk/xdr/Value.java | 2 + .../java/org/stellar/sdk/AddressTest.java | 165 +++++ .../sdk/InvokeHostFunctionOperationTest.java | 258 +++++++ .../stellar/sdk/TransactionBuilderTest.java | 156 +++- .../java/org/stellar/sdk/TransactionTest.java | 92 ++- src/test/java/org/stellar/sdk/UtilTest.java | 45 ++ .../responses/OperationDeserializerTest.java | 122 ++++ xdr/Stellar-contract-config-setting.x | 238 +++++++ xdr/Stellar-contract-env-meta.x | 23 + xdr/Stellar-contract-meta.x | 29 + xdr/Stellar-contract-spec.x | 250 +++++++ xdr/Stellar-contract.x | 260 +++++++ xdr/Stellar-internal.x | 41 ++ xdr/Stellar-ledger-entries.x | 93 ++- xdr/Stellar-ledger.x | 187 ++++- xdr/Stellar-overlay.x | 80 ++- xdr/Stellar-transaction.x | 468 +++++++++++- xdr/Stellar-types.x | 4 + 391 files changed, 20848 insertions(+), 1881 deletions(-) create mode 100644 src/main/java/org/stellar/sdk/Address.java create mode 100644 src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java create mode 100644 src/main/java/org/stellar/sdk/responses/operations/InvokeHostFunctionOperationResponse.java create mode 100644 src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationOp.java create mode 100644 src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResult.java create mode 100644 src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResultCode.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ConfigSettingContractBandwidthV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ConfigSettingContractComputeV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ConfigSettingContractExecutionLanesV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ConfigSettingContractHistoricalDataV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ConfigSettingContractLedgerCostV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ConfigSettingContractMetaDataV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ConfigSettingEntry.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ConfigSettingID.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSet.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSetKey.java create mode 100644 src/main/java/org/stellar/sdk/xdr/Constants.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ContractCodeEntry.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ContractCostParamEntry.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ContractCostParams.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ContractCostType.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ContractDataDurability.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ContractDataEntry.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ContractDataFlags.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ContractEntryBodyType.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ContractEvent.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ContractEventType.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ContractExecutable.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ContractExecutableType.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ContractIDPreimage.java create mode 100644 src/main/java/org/stellar/sdk/xdr/ContractIDPreimageType.java create mode 100644 src/main/java/org/stellar/sdk/xdr/CreateContractArgs.java delete mode 100644 src/main/java/org/stellar/sdk/xdr/CreatePassiveOfferOp.java create mode 100644 src/main/java/org/stellar/sdk/xdr/DiagnosticEvent.java create mode 100644 src/main/java/org/stellar/sdk/xdr/FloodAdvert.java create mode 100644 src/main/java/org/stellar/sdk/xdr/FloodDemand.java create mode 100644 src/main/java/org/stellar/sdk/xdr/GeneralizedTransactionSet.java create mode 100644 src/main/java/org/stellar/sdk/xdr/HostFunction.java create mode 100644 src/main/java/org/stellar/sdk/xdr/HostFunctionType.java create mode 100644 src/main/java/org/stellar/sdk/xdr/Int128Parts.java create mode 100644 src/main/java/org/stellar/sdk/xdr/Int256Parts.java create mode 100644 src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionOp.java create mode 100644 src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResult.java create mode 100644 src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResultCode.java create mode 100644 src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionSuccessPreImage.java create mode 100644 src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV1.java create mode 100644 src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV2.java create mode 100644 src/main/java/org/stellar/sdk/xdr/LedgerFootprint.java delete mode 100644 src/main/java/org/stellar/sdk/xdr/ManageOfferOp.java delete mode 100644 src/main/java/org/stellar/sdk/xdr/ManageOfferResult.java delete mode 100644 src/main/java/org/stellar/sdk/xdr/ManageOfferResultCode.java delete mode 100644 src/main/java/org/stellar/sdk/xdr/OperationID.java delete mode 100644 src/main/java/org/stellar/sdk/xdr/PathPaymentResult.java delete mode 100644 src/main/java/org/stellar/sdk/xdr/PathPaymentResultCode.java create mode 100644 src/main/java/org/stellar/sdk/xdr/PersistedSCPState.java create mode 100644 src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV1.java create mode 100644 src/main/java/org/stellar/sdk/xdr/RestoreFootprintOp.java create mode 100644 src/main/java/org/stellar/sdk/xdr/RestoreFootprintResult.java create mode 100644 src/main/java/org/stellar/sdk/xdr/RestoreFootprintResultCode.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCAddress.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCAddressType.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCBytes.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCContractInstance.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCEnvMetaEntry.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCEnvMetaKind.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCError.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCErrorCode.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCErrorType.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCMap.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCMapEntry.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCMetaEntry.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCMetaKind.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCMetaV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCNonceKey.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecEntry.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecEntryKind.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecFunctionInputV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecFunctionV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecType.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecTypeBytesN.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecTypeDef.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecTypeMap.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecTypeOption.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecTypeResult.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecTypeSet.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecTypeTuple.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecTypeUDT.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecTypeVec.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumCaseV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumCaseV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructFieldV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseTupleV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0Kind.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseVoidV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionV0.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCString.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCSymbol.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCVal.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCValType.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SCVec.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SendMoreExtended.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SorobanAddressCredentials.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SorobanAuthorizationEntry.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedContractFunction.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunction.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunctionType.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedInvocation.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SorobanCredentials.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SorobanCredentialsType.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SorobanResources.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SorobanTransactionData.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SorobanTransactionMeta.java create mode 100644 src/main/java/org/stellar/sdk/xdr/StateExpirationSettings.java create mode 100644 src/main/java/org/stellar/sdk/xdr/StoredTransactionSet.java create mode 100644 src/main/java/org/stellar/sdk/xdr/SurveyMessageResponseType.java delete mode 100644 src/main/java/org/stellar/sdk/xdr/ThresholdIndices.java rename src/main/java/org/stellar/sdk/xdr/{TopologyResponseBody.java => TopologyResponseBodyV0.java} (65%) create mode 100644 src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV1.java create mode 100644 src/main/java/org/stellar/sdk/xdr/TransactionMetaV3.java create mode 100644 src/main/java/org/stellar/sdk/xdr/TransactionPhase.java create mode 100644 src/main/java/org/stellar/sdk/xdr/TransactionSetV1.java create mode 100644 src/main/java/org/stellar/sdk/xdr/TxAdvertVector.java create mode 100644 src/main/java/org/stellar/sdk/xdr/TxDemandVector.java create mode 100644 src/main/java/org/stellar/sdk/xdr/TxSetComponent.java create mode 100644 src/main/java/org/stellar/sdk/xdr/TxSetComponentType.java create mode 100644 src/main/java/org/stellar/sdk/xdr/UInt128Parts.java create mode 100644 src/main/java/org/stellar/sdk/xdr/UInt256Parts.java create mode 100644 src/test/java/org/stellar/sdk/AddressTest.java create mode 100644 src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java create mode 100644 src/test/java/org/stellar/sdk/UtilTest.java create mode 100644 xdr/Stellar-contract-config-setting.x create mode 100644 xdr/Stellar-contract-env-meta.x create mode 100644 xdr/Stellar-contract-meta.x create mode 100644 xdr/Stellar-contract-spec.x create mode 100644 xdr/Stellar-contract.x create mode 100644 xdr/Stellar-internal.x diff --git a/readme.md b/readme.md index a1a2c1202..5d44136cd 100644 --- a/readme.md +++ b/readme.md @@ -42,5 +42,5 @@ java-stellar-sdk is licensed under an Apache-2.0 license. See the [LICENSE](http ## xdr to jave code generation All the java source files in org.stellar.sdk.xdr package are generated using the `xdrgen` command from the [stellar/xdrgen](https://github.com/stellar/xdrgen) ``` -xdrgen -o ./src/main/java/org/stellar/sdk/xdr -l java -n org.stellar.sdk.xdr ./xdr/Stellar-types.x ./xdr/Stellar-SCP.x ./xdr/Stellar-overlay.x ./xdr/Stellar-ledger-entries.x ./xdr/Stellar-ledger.x ./xdr/Stellar-transaction.x +xdrgen -o ./src/main/java/org/stellar/sdk/xdr -l java -n org.stellar.sdk.xdr ./xdr/*.x ``` \ No newline at end of file diff --git a/src/main/java/org/stellar/sdk/Address.java b/src/main/java/org/stellar/sdk/Address.java new file mode 100644 index 000000000..385ea9242 --- /dev/null +++ b/src/main/java/org/stellar/sdk/Address.java @@ -0,0 +1,170 @@ +package org.stellar.sdk; + +import com.google.common.base.Objects; +import org.stellar.sdk.xdr.Hash; +import org.stellar.sdk.xdr.SCAddress; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +/** + * Represents a single address in the Stellar network. An address can represent an account or a + * contract. + */ +public class Address { + + private final byte[] key; + + private final AddressType type; + + /** + * Creates a new {@link Address} from a Stellar public key or contract ID. + * + * @param address the StrKey encoded format of Stellar public key or contract ID. + */ + public Address(String address) { + if (StrKey.isValidStellarAccountId(address)) { + this.type = AddressType.ACCOUNT; + this.key = StrKey.decodeStellarAccountId(address); + } else if (StrKey.isValidContractId(address)) { + this.type = AddressType.CONTRACT; + this.key = StrKey.decodeContractId(address); + } else { + throw new IllegalArgumentException("Unsupported address type"); + } + } + + /** + * Creates a new {@link Address} from a Stellar public key. + * + * @param accountId the byte array of the Stellar public key. + * @return a new {@link Address} object from the given Stellar public key. + */ + public static Address fromAccount(byte[] accountId) { + return new Address(StrKey.encodeStellarAccountId(accountId)); + } + + /** + * Creates a new {@link Address} from a Stellar Contract ID. + * + * @param contractId the byte array of the Stellar Contract ID. + * @return a new {@link Address} object from the given Stellar Contract ID. + */ + public static Address fromContract(byte[] contractId) { + return new Address(StrKey.encodeContractId(contractId)); + } + + /** + * Creates a new {@link Address} from a {@link SCAddress} XDR object. + * + * @param scAddress the {@link SCAddress} object to convert + * @return a new {@link Address} object from the given XDR object + */ + public static Address fromSCAddress(SCAddress scAddress) { + switch (scAddress.getDiscriminant()) { + case SC_ADDRESS_TYPE_ACCOUNT: + return new Address(StrKey.encodeStellarAccountId(scAddress.getAccountId())); + case SC_ADDRESS_TYPE_CONTRACT: + return new Address(StrKey.encodeContractId(scAddress.getContractId().getHash())); + default: + throw new IllegalArgumentException("Unsupported address type"); + } + } + + /** + * Creates a new {@link Address} from a {@link SCVal} XDR object. + * + * @param scVal the {@link SCVal} object to convert + * @return a new {@link Address} object from the given XDR object + */ + public static Address fromSCVal(SCVal scVal) { + if (!SCValType.SCV_ADDRESS.equals(scVal.getDiscriminant())) { + throw new IllegalArgumentException("SCVal is not of type SCV_ADDRESS"); + } + return Address.fromSCAddress(scVal.getAddress()); + } + + /** + * Converts this object to its {@link SCAddress} XDR object representation. + * + * @return a new {@link SCAddress} object from this object + */ + public SCAddress toSCAddress() { + SCAddress scAddress = new SCAddress(); + switch (this.type) { + case ACCOUNT: + scAddress.setDiscriminant(org.stellar.sdk.xdr.SCAddressType.SC_ADDRESS_TYPE_ACCOUNT); + scAddress.setAccountId(KeyPair.fromPublicKey(this.key).getXdrAccountId()); + break; + case CONTRACT: + scAddress.setDiscriminant(org.stellar.sdk.xdr.SCAddressType.SC_ADDRESS_TYPE_CONTRACT); + scAddress.setContractId(new Hash(this.key)); + break; + default: + throw new IllegalArgumentException("Unsupported address type"); + } + return scAddress; + } + + /** + * Converts this object to its {@link SCVal} XDR object representation. + * + * @return a new {@link SCVal} object from this object + */ + public SCVal toSCVal() { + SCVal scVal = new SCVal(); + scVal.setDiscriminant(SCValType.SCV_ADDRESS); + scVal.setAddress(this.toSCAddress()); + return scVal; + } + + /** + * Returns the byte array of the Stellar public key or contract ID. + * + * @return the byte array of the Stellar public key or contract ID. + */ + public byte[] getBytes() { + return key; + } + + /** + * Returns the type of this address. + * + * @return the type of this address. + */ + public AddressType getType() { + return type; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.key, this.type); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof Address)) { + return false; + } + + Address other = (Address) object; + return Objects.equal(this.key, other.key) && Objects.equal(this.type, other.type); + } + + @Override + public String toString() { + switch (this.type) { + case ACCOUNT: + return StrKey.encodeStellarAccountId(this.key); + case CONTRACT: + return StrKey.encodeContractId(this.key); + default: + throw new IllegalArgumentException("Unsupported address type"); + } + } + + /** Represents the type of the address. */ + public enum AddressType { + ACCOUNT, + CONTRACT + } +} diff --git a/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java b/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java new file mode 100644 index 000000000..e0ed9cccd --- /dev/null +++ b/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java @@ -0,0 +1,62 @@ +package org.stellar.sdk; + +import java.util.Arrays; +import java.util.Collection; +import lombok.EqualsAndHashCode; +import lombok.NonNull; +import lombok.Singular; +import lombok.Value; +import lombok.experimental.SuperBuilder; +import org.stellar.sdk.xdr.HostFunction; +import org.stellar.sdk.xdr.InvokeHostFunctionOp; +import org.stellar.sdk.xdr.OperationType; +import org.stellar.sdk.xdr.SorobanAuthorizationEntry; + +/** + * Represents InvokeHostFunction operation. + * + * @see List of Operations + */ +@EqualsAndHashCode(callSuper = true) +@SuperBuilder(toBuilder = true) +@Value +public class InvokeHostFunctionOperation extends Operation { + + /** The host function to invoke. */ + @NonNull HostFunction hostFunction; + + /** The authorizations required to execute the host function */ + @Singular("auth") + @NonNull + Collection auth; + + /** + * Constructs a new InvokeHostFunctionOperation object from the XDR representation of the {@link + * InvokeHostFunctionOperation}. + * + * @param op the XDR representation of the {@link InvokeHostFunctionOperation}. + */ + public static InvokeHostFunctionOperation fromXdr(InvokeHostFunctionOp op) { + return InvokeHostFunctionOperation.builder() + .hostFunction(op.getHostFunction()) + .auth(Arrays.asList(op.getAuth())) + .build(); + } + + @Override + org.stellar.sdk.xdr.Operation.OperationBody toOperationBody(AccountConverter accountConverter) { + InvokeHostFunctionOp op = new InvokeHostFunctionOp(); + op.setHostFunction(this.hostFunction); + op.setAuth(this.auth.toArray(new SorobanAuthorizationEntry[0])); + + org.stellar.sdk.xdr.Operation.OperationBody body = + new org.stellar.sdk.xdr.Operation.OperationBody(); + body.setDiscriminant(OperationType.INVOKE_HOST_FUNCTION); + body.setInvokeHostFunctionOp(op); + + return body; + } +} diff --git a/src/main/java/org/stellar/sdk/KeyPair.java b/src/main/java/org/stellar/sdk/KeyPair.java index 0b0410c6e..9787b5fe0 100644 --- a/src/main/java/org/stellar/sdk/KeyPair.java +++ b/src/main/java/org/stellar/sdk/KeyPair.java @@ -19,6 +19,7 @@ import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable; import net.i2p.crypto.eddsa.spec.EdDSAPrivateKeySpec; import net.i2p.crypto.eddsa.spec.EdDSAPublicKeySpec; +import org.stellar.sdk.xdr.AccountID; import org.stellar.sdk.xdr.DecoratedSignature; import org.stellar.sdk.xdr.PublicKey; import org.stellar.sdk.xdr.PublicKeyType; @@ -200,6 +201,12 @@ public PublicKey getXdrPublicKey() { return publicKey; } + public AccountID getXdrAccountId() { + AccountID accountID = new AccountID(); + accountID.setAccountID(getXdrPublicKey()); + return accountID; + } + public SignerKey getXdrSignerKey() { SignerKey signerKey = new SignerKey(); signerKey.setDiscriminant(SignerKeyType.SIGNER_KEY_TYPE_ED25519); diff --git a/src/main/java/org/stellar/sdk/Operation.java b/src/main/java/org/stellar/sdk/Operation.java index df15ada73..b8b3a0a21 100644 --- a/src/main/java/org/stellar/sdk/Operation.java +++ b/src/main/java/org/stellar/sdk/Operation.java @@ -6,13 +6,19 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.math.BigDecimal; -import org.stellar.sdk.xdr.*; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.SuperBuilder; +import org.stellar.sdk.xdr.XdrDataOutputStream; /** Abstract class for operations. */ +@SuperBuilder(toBuilder = true) +@EqualsAndHashCode public abstract class Operation { Operation() {} - private String mSourceAccount; + @Getter @Setter private String sourceAccount; private static final BigDecimal ONE = new BigDecimal(10).pow(7); @@ -31,7 +37,7 @@ protected static String fromXdrAmount(long value) { public org.stellar.sdk.xdr.Operation toXdr(AccountConverter accountConverter) { org.stellar.sdk.xdr.Operation xdr = new org.stellar.sdk.xdr.Operation(); if (getSourceAccount() != null) { - xdr.setSourceAccount(accountConverter.encode(mSourceAccount)); + xdr.setSourceAccount(accountConverter.encode(sourceAccount)); } xdr.setBody(toOperationBody(accountConverter)); return xdr; @@ -200,6 +206,9 @@ public static Operation fromXdr( case LIQUIDITY_POOL_WITHDRAW: operation = new LiquidityPoolWithdrawOperation(body.getLiquidityPoolWithdrawOp()); break; + case INVOKE_HOST_FUNCTION: + operation = InvokeHostFunctionOperation.fromXdr(body.getInvokeHostFunctionOp()); + break; default: throw new RuntimeException("Unknown operation body " + body.getDiscriminant()); } @@ -218,20 +227,6 @@ public static Operation fromXdr(org.stellar.sdk.xdr.Operation xdr) { return fromXdr(AccountConverter.enableMuxed(), xdr); } - /** Returns operation source account. */ - public String getSourceAccount() { - return mSourceAccount; - } - - /** - * Sets operation source account. - * - * @param sourceAccount - */ - void setSourceAccount(String sourceAccount) { - mSourceAccount = checkNotNull(sourceAccount, "sourceAccount cannot be null"); - } - /** * Generates OperationBody XDR object * diff --git a/src/main/java/org/stellar/sdk/StrKey.java b/src/main/java/org/stellar/sdk/StrKey.java index d670ab842..74041aef2 100644 --- a/src/main/java/org/stellar/sdk/StrKey.java +++ b/src/main/java/org/stellar/sdk/StrKey.java @@ -24,38 +24,9 @@ class StrKey { public static final int ACCOUNT_ID_ADDRESS_LENGTH = 56; - - public enum VersionByte { - ACCOUNT_ID((byte) (6 << 3)), // G - MUXED((byte) (12 << 3)), // M - SEED((byte) (18 << 3)), // S - PRE_AUTH_TX((byte) (19 << 3)), // T - SHA256_HASH((byte) (23 << 3)), // X - SIGNED_PAYLOAD((byte) (15 << 3)), // P - - CONTRACT((byte) (2 << 3)); // C - - private final byte value; - - VersionByte(byte value) { - this.value = value; - } - - public int getValue() { - return value; - } - - public static Optional findByValue(byte value) { - for (VersionByte versionByte : values()) { - if (value == versionByte.value) { - return Optional.of(versionByte); - } - } - return Optional.absent(); - } - } - - private static BaseEncoding base32Encoding = BaseEncoding.base32().upperCase().omitPadding(); + private static final byte[] b32Table = decodingTable(); + private static final BaseEncoding base32Encoding = + BaseEncoding.base32().upperCase().omitPadding(); public static String encodeContractId(byte[] data) { char[] encoded = encodeCheck(VersionByte.CONTRACT, data); @@ -237,6 +208,36 @@ public static byte[] decodeSha256Hash(String data) { return decodeCheck(VersionByte.SHA256_HASH, data.toCharArray()); } + /** + * Checks validity of Stellar account ID (G...). + * + * @param accountID the account ID to check + * @return true if the given Stellar account ID is a valid Stellar account ID, false otherwise + */ + public static boolean isValidStellarAccountId(String accountID) { + try { + decodeStellarAccountId(accountID); + return true; + } catch (Exception e) { + return false; + } + } + + /** + * Checks validity of contract (C...) address. + * + * @param contractId the contract ID to check + * @return true if the given contract ID is a valid contract ID, false otherwise + */ + public static boolean isValidContractId(String contractId) { + try { + decodeContractId(contractId); + return true; + } catch (Exception e) { + return false; + } + } + protected static char[] encodeCheck(VersionByte versionByte, byte[] data) { try { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); @@ -356,8 +357,6 @@ protected static byte[] calculateChecksum(byte[] bytes) { return new byte[] {(byte) crc, (byte) (crc >>> 8)}; } - private static final byte[] b32Table = decodingTable(); - private static byte[] decodingTable() { byte[] table = new byte[256]; for (int i = 0; i < 256; i++) { @@ -365,8 +364,38 @@ private static byte[] decodingTable() { } String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; for (int i = 0; i < alphabet.length(); i++) { - table[(int) alphabet.charAt(i)] = (byte) i; + table[alphabet.charAt(i)] = (byte) i; } return table; } + + public enum VersionByte { + ACCOUNT_ID((byte) (6 << 3)), // G + MUXED((byte) (12 << 3)), // M + SEED((byte) (18 << 3)), // S + PRE_AUTH_TX((byte) (19 << 3)), // T + SHA256_HASH((byte) (23 << 3)), // X + SIGNED_PAYLOAD((byte) (15 << 3)), // P + + CONTRACT((byte) (2 << 3)); // C + + private final byte value; + + VersionByte(byte value) { + this.value = value; + } + + public static Optional findByValue(byte value) { + for (VersionByte versionByte : values()) { + if (value == versionByte.value) { + return Optional.of(versionByte); + } + } + return Optional.absent(); + } + + public int getValue() { + return value; + } + } } diff --git a/src/main/java/org/stellar/sdk/Transaction.java b/src/main/java/org/stellar/sdk/Transaction.java index d62698a1a..fe3409013 100644 --- a/src/main/java/org/stellar/sdk/Transaction.java +++ b/src/main/java/org/stellar/sdk/Transaction.java @@ -7,14 +7,16 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; +import org.stellar.sdk.xdr.AccountID; import org.stellar.sdk.xdr.ClaimableBalanceID; import org.stellar.sdk.xdr.ClaimableBalanceIDType; import org.stellar.sdk.xdr.DecoratedSignature; import org.stellar.sdk.xdr.EnvelopeType; import org.stellar.sdk.xdr.Hash; +import org.stellar.sdk.xdr.HashIDPreimage; import org.stellar.sdk.xdr.Int64; -import org.stellar.sdk.xdr.OperationID; import org.stellar.sdk.xdr.SequenceNumber; +import org.stellar.sdk.xdr.SorobanTransactionData; import org.stellar.sdk.xdr.TransactionEnvelope; import org.stellar.sdk.xdr.TransactionSignaturePayload; import org.stellar.sdk.xdr.TransactionV0; @@ -34,6 +36,7 @@ public class Transaction extends AbstractTransaction { private final Operation[] mOperations; private final Memo mMemo; private final TransactionPreconditions mPreconditions; + private final SorobanTransactionData mSorobanData; private EnvelopeType envelopeType = EnvelopeType.ENVELOPE_TYPE_TX; Transaction( @@ -44,6 +47,7 @@ public class Transaction extends AbstractTransaction { Operation[] operations, Memo memo, TransactionPreconditions preconditions, + SorobanTransactionData sorobanData, Network network) { super(accountConverter, network); this.mSourceAccount = checkNotNull(sourceAccount, "sourceAccount cannot be null"); @@ -53,6 +57,7 @@ public class Transaction extends AbstractTransaction { this.mPreconditions = preconditions; this.mFee = fee; this.mMemo = memo != null ? memo : Memo.none(); + this.mSorobanData = sorobanData; } // setEnvelopeType is only used in tests which is why this method is package protected @@ -81,6 +86,15 @@ public Memo getMemo() { return mMemo; } + /** + * Get the Soroban data for the transaction. + * + * @return SorobanTransactionData if the transaction includes SorobanData, otherwise null. + */ + public SorobanTransactionData getSorobanData() { + return mSorobanData; + } + /** * Get the pre-conditions for the transaction * @@ -131,23 +145,29 @@ public String getClaimableBalanceId(int index) throws IOException { // // Note that the source account must be *unmuxed* for this to work. - OperationID id = new OperationID(); - id.setDiscriminant(EnvelopeType.ENVELOPE_TYPE_OP_ID); - OperationID.OperationIDId body = new OperationID.OperationIDId(); - body.setOpNum(new Uint32(index)); - body.setSeqNum(new SequenceNumber(new Int64(getSequenceNumber()))); - body.setSourceAccount( - StrKey.muxedAccountToAccountId(AccountConverter.disableMuxed().encode(getSourceAccount()))); - id.setId(body); - + Uint32 opIndex = new Uint32(index); + SequenceNumber sequenceNumber = new SequenceNumber(new Int64(getSequenceNumber())); + AccountID sourceAccount = + StrKey.muxedAccountToAccountId(AccountConverter.disableMuxed().encode(getSourceAccount())); + HashIDPreimage.HashIDPreimageOperationID operationID = + new HashIDPreimage.HashIDPreimageOperationID.Builder() + .opNum(opIndex) + .seqNum(sequenceNumber) + .sourceAccount(sourceAccount) + .build(); + HashIDPreimage hashIDPreimage = + new HashIDPreimage.Builder() + .discriminant(EnvelopeType.ENVELOPE_TYPE_OP_ID) + .operationID(operationID) + .build(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - id.encode(new XdrDataOutputStream(outputStream)); + hashIDPreimage.encode(new XdrDataOutputStream(outputStream)); + Hash operationIDHash = new Hash(Util.hash(outputStream.toByteArray())); + outputStream.reset(); ClaimableBalanceID result = new ClaimableBalanceID(); result.setDiscriminant(ClaimableBalanceIDType.CLAIMABLE_BALANCE_ID_TYPE_V0); - result.setV0(new Hash(Util.hash(outputStream.toByteArray()))); - - outputStream.reset(); + result.setV0(operationIDHash); result.encode(new XdrDataOutputStream(outputStream)); return Util.bytesToHex(outputStream.toByteArray()).toLowerCase(); } @@ -203,7 +223,12 @@ private org.stellar.sdk.xdr.Transaction toV1Xdr(AccountConverter accountConverte // ext org.stellar.sdk.xdr.Transaction.TransactionExt ext = new org.stellar.sdk.xdr.Transaction.TransactionExt(); - ext.setDiscriminant(0); + if (this.mSorobanData != null) { + ext.setDiscriminant(1); + ext.setSorobanData(this.mSorobanData); + } else { + ext.setDiscriminant(0); + } org.stellar.sdk.xdr.Transaction v1Tx = new org.stellar.sdk.xdr.Transaction(); v1Tx.setFee(fee); @@ -238,6 +263,7 @@ public static Transaction fromV0EnvelopeXdr( mOperations, mMemo, TransactionPreconditions.builder().timeBounds(mTimeBounds).build(), + null, network); transaction.setEnvelopeType(EnvelopeType.ENVELOPE_TYPE_TX_V0); @@ -261,6 +287,8 @@ public static Transaction fromV1EnvelopeXdr( mOperations[i] = Operation.fromXdr(accountConverter, envelope.getTx().getOperations()[i]); } + SorobanTransactionData sorobanData = envelope.getTx().getExt().getSorobanData(); + Transaction transaction = new Transaction( accountConverter, @@ -270,6 +298,7 @@ public static Transaction fromV1EnvelopeXdr( mOperations, mMemo, TransactionPreconditions.fromXdr(envelope.getTx().getCond()), + sorobanData, network); transaction.mSignatures.addAll(Arrays.asList(envelope.getSignatures())); @@ -318,7 +347,8 @@ public int hashCode() { this.mMemo, this.mPreconditions, this.mSignatures, - this.mNetwork); + this.mNetwork, + this.mSorobanData); } @Override @@ -336,7 +366,8 @@ public boolean equals(Object object) { && Objects.equal(this.mMemo, other.mMemo) && Objects.equal(this.mPreconditions, other.mPreconditions) && Objects.equal(this.mNetwork, other.mNetwork) - && Objects.equal(this.mSignatures, other.mSignatures); + && Objects.equal(this.mSignatures, other.mSignatures) + && Objects.equal(this.mSorobanData, other.mSorobanData); } /** diff --git a/src/main/java/org/stellar/sdk/TransactionBuilder.java b/src/main/java/org/stellar/sdk/TransactionBuilder.java index 0fbb591d3..134456144 100644 --- a/src/main/java/org/stellar/sdk/TransactionBuilder.java +++ b/src/main/java/org/stellar/sdk/TransactionBuilder.java @@ -8,6 +8,7 @@ import java.util.Collection; import java.util.List; import org.stellar.sdk.TransactionPreconditions.TransactionPreconditionsBuilder; +import org.stellar.sdk.xdr.SorobanTransactionData; import org.stellar.sdk.xdr.TimePoint; import org.stellar.sdk.xdr.Uint64; @@ -20,6 +21,7 @@ public class TransactionBuilder { private Integer mBaseFee; private Network mNetwork; private TransactionPreconditions mPreconditions; + private SorobanTransactionData mSorobanData; /** * Construct a new transaction builder. @@ -220,6 +222,7 @@ public Transaction build() { operations, mMemo, mPreconditions, + mSorobanData, mNetwork); mSourceAccount.setSequenceNumber(sequenceNumber); return transaction; @@ -243,4 +246,26 @@ public static org.stellar.sdk.xdr.TimeBounds buildTimeBounds(long minTime, long .maxTime(new TimePoint(new Uint64(maxTime))) .build(); } + + /** + * Sets Soroban data to the transaction. TODO: After adding SorobanServer, add more descriptions. + * + * @param sorobanData Soroban data to set + * @return Builder object so you can chain methods. + */ + public TransactionBuilder setSorobanData(SorobanTransactionData sorobanData) { + this.mSorobanData = sorobanData; + return this; + } + + /** + * Sets Soroban data to the transaction. TODO: After adding SorobanServer, add more descriptions. + * + * @param sorobanData Soroban data to set + * @return Builder object so you can chain methods. + */ + public TransactionBuilder setSorobanData(String sorobanData) { + SorobanTransactionData data = Util.sorobanTransactionDataToXDR(sorobanData); + return setSorobanData(data); + } } diff --git a/src/main/java/org/stellar/sdk/Util.java b/src/main/java/org/stellar/sdk/Util.java index e6c02831a..eaa458058 100644 --- a/src/main/java/org/stellar/sdk/Util.java +++ b/src/main/java/org/stellar/sdk/Util.java @@ -8,6 +8,7 @@ import java.security.NoSuchAlgorithmException; import java.util.Arrays; import org.stellar.sdk.xdr.ClaimableBalanceID; +import org.stellar.sdk.xdr.SorobanTransactionData; import org.stellar.sdk.xdr.XdrDataInputStream; import org.stellar.sdk.xdr.XdrDataOutputStream; @@ -123,6 +124,43 @@ public static String xdrToClaimableBalanceId(ClaimableBalanceID balanceId) { return BaseEncoding.base16().lowerCase().encode(byteArrayOutputStream.toByteArray()); } + /** + * Convert {@link SorobanTransactionData} XDR String representation to {@link + * SorobanTransactionData} object. + * + * @param sorobanData XDR String representation of a {@link SorobanTransactionData} + * @return {@link SorobanTransactionData} + */ + public static SorobanTransactionData sorobanTransactionDataToXDR(String sorobanData) { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(sorobanData); + ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); + XdrDataInputStream xdrInputStream = new XdrDataInputStream(inputStream); + try { + return SorobanTransactionData.decode(xdrInputStream); + } catch (IOException e) { + throw new IllegalArgumentException("invalid sorobanData: " + sorobanData, e); + } + } + + /** + * Convert {@link SorobanTransactionData} object to XDR String representation. + * + * @param sorobanData {@link SorobanTransactionData} object + * @return XDR String representation of a {@link SorobanTransactionData} + */ + public static String xdrToSorobanTransactionData(SorobanTransactionData sorobanData) { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + try { + sorobanData.encode(xdrDataOutputStream); + } catch (IOException e) { + throw new IllegalArgumentException("invalid sorobanData.", e); + } + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(byteArrayOutputStream.toByteArray()); + } + public static AssetTypeCreditAlphaNum assertNonNativeAsset(Asset asset) { if (asset instanceof AssetTypeCreditAlphaNum) { return (AssetTypeCreditAlphaNum) asset; diff --git a/src/main/java/org/stellar/sdk/responses/OperationDeserializer.java b/src/main/java/org/stellar/sdk/responses/OperationDeserializer.java index c16e9b0f0..961cc1474 100644 --- a/src/main/java/org/stellar/sdk/responses/OperationDeserializer.java +++ b/src/main/java/org/stellar/sdk/responses/OperationDeserializer.java @@ -87,6 +87,8 @@ public OperationResponse deserialize( return gson.fromJson(json, LiquidityPoolDepositOperationResponse.class); case LIQUIDITY_POOL_WITHDRAW: return gson.fromJson(json, LiquidityPoolWithdrawOperationResponse.class); + case INVOKE_HOST_FUNCTION: + return gson.fromJson(json, InvokeHostFunctionOperationResponse.class); default: throw new RuntimeException("Invalid operation type"); } diff --git a/src/main/java/org/stellar/sdk/responses/operations/InvokeHostFunctionOperationResponse.java b/src/main/java/org/stellar/sdk/responses/operations/InvokeHostFunctionOperationResponse.java new file mode 100644 index 000000000..47a677921 --- /dev/null +++ b/src/main/java/org/stellar/sdk/responses/operations/InvokeHostFunctionOperationResponse.java @@ -0,0 +1,165 @@ +package org.stellar.sdk.responses.operations; + +import com.google.common.collect.ImmutableList; +import com.google.gson.annotations.SerializedName; +import org.stellar.sdk.xdr.HostFunctionType; + +/** + * Represents InvokeHostFunction operation response. + * + * @see Operation documentation + * @see org.stellar.sdk.requests.OperationsRequestBuilder + * @see org.stellar.sdk.Server#operations() + */ +public class InvokeHostFunctionOperationResponse extends OperationResponse { + @SerializedName("function") + private final String function; + + @SerializedName("parameters") + private final ImmutableList parameters; + + @SerializedName("address") + private final String address; + + @SerializedName("salt") + private final String salt; + + @SerializedName("asset_balance_changes") + private final ImmutableList assetBalanceChanges; + + public InvokeHostFunctionOperationResponse( + String function, + ImmutableList parameters, + String address, + String salt, + ImmutableList assetBalanceChanges) { + this.function = function; + this.parameters = parameters; + this.address = address; + this.salt = salt; + this.assetBalanceChanges = assetBalanceChanges; + } + + /** + * Returns the function type ({@link HostFunctionType}), which can have one of the following + * values: + * + *
    + *
  • "HostFunctionTypeHostFunctionTypeInvokeContract" + *
  • "HostFunctionTypeHostFunctionTypeCreateContract" + *
  • "HostFunctionTypeHostFunctionTypeUploadContractWasm" + *
+ * + * @return the function type of the host function + */ + public String getFunction() { + return function; + } + + public ImmutableList getParameters() { + return parameters; + } + + public String getAddress() { + return address; + } + + public String getSalt() { + return salt; + } + + public ImmutableList getAssetBalanceChanges() { + return assetBalanceChanges; + } + + public static class HostFunctionParameter { + + @SerializedName("type") + private final String type; + + @SerializedName("value") + private final String value; + + HostFunctionParameter(String type, String value) { + this.type = type; + this.value = value; + } + + public String getType() { + return type; + } + + public String getValue() { + return value; + } + } + + public static class AssetContractBalanceChange { + @SerializedName("asset_type") + private final String assetType; + + @SerializedName("asset_code") + private final String assetCode; + + @SerializedName("asset_issuer") + private final String assetIssuer; + + @SerializedName("type") + private final String type; + + @SerializedName("from") + private final String from; + + @SerializedName("to") + private final String to; + + @SerializedName("amount") + private final String amount; + + AssetContractBalanceChange( + String assetType, + String assetCode, + String assetIssuer, + String type, + String from, + String to, + String amount) { + this.assetType = assetType; + this.assetCode = assetCode; + this.assetIssuer = assetIssuer; + this.type = type; + this.from = from; + this.to = to; + this.amount = amount; + } + + public String getAssetType() { + return assetType; + } + + public String getAssetCode() { + return assetCode; + } + + public String getAssetIssuer() { + return assetIssuer; + } + + public String getType() { + return type; + } + + public String getFrom() { + return from; + } + + public String getTo() { + return to; + } + + public String getAmount() { + return amount; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/AccountEntry.java b/src/main/java/org/stellar/sdk/xdr/AccountEntry.java index d5556d60b..57ed904d9 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountEntry.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -289,16 +291,16 @@ public Builder ext(AccountEntryExt ext) { public AccountEntry build() { AccountEntry val = new AccountEntry(); - val.setAccountID(accountID); - val.setBalance(balance); - val.setSeqNum(seqNum); - val.setNumSubEntries(numSubEntries); - val.setInflationDest(inflationDest); - val.setFlags(flags); - val.setHomeDomain(homeDomain); - val.setThresholds(thresholds); - val.setSigners(signers); - val.setExt(ext); + val.setAccountID(this.accountID); + val.setBalance(this.balance); + val.setSeqNum(this.seqNum); + val.setNumSubEntries(this.numSubEntries); + val.setInflationDest(this.inflationDest); + val.setFlags(this.flags); + val.setHomeDomain(this.homeDomain); + val.setThresholds(this.thresholds); + val.setSigners(this.signers); + val.setExt(this.ext); return val; } } @@ -343,7 +345,7 @@ public Builder v1(AccountEntryExtensionV1 v1) { public AccountEntryExt build() { AccountEntryExt val = new AccountEntryExt(); val.setDiscriminant(discriminant); - val.setV1(v1); + val.setV1(this.v1); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV1.java b/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV1.java index 2388a5656..5f5548726 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV1.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV1.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -95,8 +97,8 @@ public Builder ext(AccountEntryExtensionV1Ext ext) { public AccountEntryExtensionV1 build() { AccountEntryExtensionV1 val = new AccountEntryExtensionV1(); - val.setLiabilities(liabilities); - val.setExt(ext); + val.setLiabilities(this.liabilities); + val.setExt(this.ext); return val; } } @@ -141,7 +143,7 @@ public Builder v2(AccountEntryExtensionV2 v2) { public AccountEntryExtensionV1Ext build() { AccountEntryExtensionV1Ext val = new AccountEntryExtensionV1Ext(); val.setDiscriminant(discriminant); - val.setV2(v2); + val.setV2(this.v2); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV2.java b/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV2.java index f93e9f4ae..6fcbd89e0 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV2.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV2.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -147,10 +149,10 @@ public Builder ext(AccountEntryExtensionV2Ext ext) { public AccountEntryExtensionV2 build() { AccountEntryExtensionV2 val = new AccountEntryExtensionV2(); - val.setNumSponsored(numSponsored); - val.setNumSponsoring(numSponsoring); - val.setSignerSponsoringIDs(signerSponsoringIDs); - val.setExt(ext); + val.setNumSponsored(this.numSponsored); + val.setNumSponsoring(this.numSponsoring); + val.setSignerSponsoringIDs(this.signerSponsoringIDs); + val.setExt(this.ext); return val; } } @@ -195,7 +197,7 @@ public Builder v3(AccountEntryExtensionV3 v3) { public AccountEntryExtensionV2Ext build() { AccountEntryExtensionV2Ext val = new AccountEntryExtensionV2Ext(); val.setDiscriminant(discriminant); - val.setV3(v3); + val.setV3(this.v3); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV3.java b/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV3.java index bbaf78e95..44a51aef3 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV3.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV3.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -114,9 +116,9 @@ public Builder seqTime(TimePoint seqTime) { public AccountEntryExtensionV3 build() { AccountEntryExtensionV3 val = new AccountEntryExtensionV3(); - val.setExt(ext); - val.setSeqLedger(seqLedger); - val.setSeqTime(seqTime); + val.setExt(this.ext); + val.setSeqLedger(this.seqLedger); + val.setSeqTime(this.seqTime); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/AccountFlags.java b/src/main/java/org/stellar/sdk/xdr/AccountFlags.java index 26afe0fc5..35b38cb06 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountFlags.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountFlags.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/AccountID.java b/src/main/java/org/stellar/sdk/xdr/AccountID.java index 5c41c8183..25f5a81a4 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountID.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountID.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; diff --git a/src/main/java/org/stellar/sdk/xdr/AccountMergeResult.java b/src/main/java/org/stellar/sdk/xdr/AccountMergeResult.java index d73f67bfc..d9aa45f26 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountMergeResult.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountMergeResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,13 @@ // { // case ACCOUNT_MERGE_SUCCESS: // int64 sourceAccountBalance; // how much got transferred from source account -// default: +// case ACCOUNT_MERGE_MALFORMED: +// case ACCOUNT_MERGE_NO_ACCOUNT: +// case ACCOUNT_MERGE_IMMUTABLE_SET: +// case ACCOUNT_MERGE_HAS_SUB_ENTRIES: +// case ACCOUNT_MERGE_SEQNUM_TOO_FAR: +// case ACCOUNT_MERGE_DEST_FULL: +// case ACCOUNT_MERGE_IS_SPONSOR: // void; // }; @@ -57,7 +65,7 @@ public Builder sourceAccountBalance(Int64 sourceAccountBalance) { public AccountMergeResult build() { AccountMergeResult val = new AccountMergeResult(); val.setDiscriminant(discriminant); - val.setSourceAccountBalance(sourceAccountBalance); + val.setSourceAccountBalance(this.sourceAccountBalance); return val; } } @@ -71,7 +79,13 @@ public static void encode( case ACCOUNT_MERGE_SUCCESS: Int64.encode(stream, encodedAccountMergeResult.sourceAccountBalance); break; - default: + case ACCOUNT_MERGE_MALFORMED: + case ACCOUNT_MERGE_NO_ACCOUNT: + case ACCOUNT_MERGE_IMMUTABLE_SET: + case ACCOUNT_MERGE_HAS_SUB_ENTRIES: + case ACCOUNT_MERGE_SEQNUM_TOO_FAR: + case ACCOUNT_MERGE_DEST_FULL: + case ACCOUNT_MERGE_IS_SPONSOR: break; } } @@ -88,7 +102,13 @@ public static AccountMergeResult decode(XdrDataInputStream stream) throws IOExce case ACCOUNT_MERGE_SUCCESS: decodedAccountMergeResult.sourceAccountBalance = Int64.decode(stream); break; - default: + case ACCOUNT_MERGE_MALFORMED: + case ACCOUNT_MERGE_NO_ACCOUNT: + case ACCOUNT_MERGE_IMMUTABLE_SET: + case ACCOUNT_MERGE_HAS_SUB_ENTRIES: + case ACCOUNT_MERGE_SEQNUM_TOO_FAR: + case ACCOUNT_MERGE_DEST_FULL: + case ACCOUNT_MERGE_IS_SPONSOR: break; } return decodedAccountMergeResult; diff --git a/src/main/java/org/stellar/sdk/xdr/AccountMergeResultCode.java b/src/main/java/org/stellar/sdk/xdr/AccountMergeResultCode.java index 820c37c32..837c6cd65 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountMergeResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountMergeResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/AllowTrustOp.java b/src/main/java/org/stellar/sdk/xdr/AllowTrustOp.java index d647e019d..d47b32de6 100644 --- a/src/main/java/org/stellar/sdk/xdr/AllowTrustOp.java +++ b/src/main/java/org/stellar/sdk/xdr/AllowTrustOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -109,9 +111,9 @@ public Builder authorize(Uint32 authorize) { public AllowTrustOp build() { AllowTrustOp val = new AllowTrustOp(); - val.setTrustor(trustor); - val.setAsset(asset); - val.setAuthorize(authorize); + val.setTrustor(this.trustor); + val.setAsset(this.asset); + val.setAuthorize(this.authorize); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/AllowTrustResult.java b/src/main/java/org/stellar/sdk/xdr/AllowTrustResult.java index 6c2e5e55e..def5ef34d 100644 --- a/src/main/java/org/stellar/sdk/xdr/AllowTrustResult.java +++ b/src/main/java/org/stellar/sdk/xdr/AllowTrustResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,12 @@ // { // case ALLOW_TRUST_SUCCESS: // void; -// default: +// case ALLOW_TRUST_MALFORMED: +// case ALLOW_TRUST_NO_TRUST_LINE: +// case ALLOW_TRUST_TRUST_NOT_REQUIRED: +// case ALLOW_TRUST_CANT_REVOKE: +// case ALLOW_TRUST_SELF_NOT_ALLOWED: +// case ALLOW_TRUST_LOW_RESERVE: // void; // }; @@ -53,7 +60,12 @@ public static void encode(XdrDataOutputStream stream, AllowTrustResult encodedAl switch (encodedAllowTrustResult.getDiscriminant()) { case ALLOW_TRUST_SUCCESS: break; - default: + case ALLOW_TRUST_MALFORMED: + case ALLOW_TRUST_NO_TRUST_LINE: + case ALLOW_TRUST_TRUST_NOT_REQUIRED: + case ALLOW_TRUST_CANT_REVOKE: + case ALLOW_TRUST_SELF_NOT_ALLOWED: + case ALLOW_TRUST_LOW_RESERVE: break; } } @@ -69,7 +81,12 @@ public static AllowTrustResult decode(XdrDataInputStream stream) throws IOExcept switch (decodedAllowTrustResult.getDiscriminant()) { case ALLOW_TRUST_SUCCESS: break; - default: + case ALLOW_TRUST_MALFORMED: + case ALLOW_TRUST_NO_TRUST_LINE: + case ALLOW_TRUST_TRUST_NOT_REQUIRED: + case ALLOW_TRUST_CANT_REVOKE: + case ALLOW_TRUST_SELF_NOT_ALLOWED: + case ALLOW_TRUST_LOW_RESERVE: break; } return decodedAllowTrustResult; diff --git a/src/main/java/org/stellar/sdk/xdr/AllowTrustResultCode.java b/src/main/java/org/stellar/sdk/xdr/AllowTrustResultCode.java index 0296499aa..350ea0076 100644 --- a/src/main/java/org/stellar/sdk/xdr/AllowTrustResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/AllowTrustResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/AlphaNum12.java b/src/main/java/org/stellar/sdk/xdr/AlphaNum12.java index 66b549d84..87573ea1b 100644 --- a/src/main/java/org/stellar/sdk/xdr/AlphaNum12.java +++ b/src/main/java/org/stellar/sdk/xdr/AlphaNum12.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -87,8 +89,8 @@ public Builder issuer(AccountID issuer) { public AlphaNum12 build() { AlphaNum12 val = new AlphaNum12(); - val.setAssetCode(assetCode); - val.setIssuer(issuer); + val.setAssetCode(this.assetCode); + val.setIssuer(this.issuer); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/AlphaNum4.java b/src/main/java/org/stellar/sdk/xdr/AlphaNum4.java index 69e8c7b87..2b8110bff 100644 --- a/src/main/java/org/stellar/sdk/xdr/AlphaNum4.java +++ b/src/main/java/org/stellar/sdk/xdr/AlphaNum4.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -87,8 +89,8 @@ public Builder issuer(AccountID issuer) { public AlphaNum4 build() { AlphaNum4 val = new AlphaNum4(); - val.setAssetCode(assetCode); - val.setIssuer(issuer); + val.setAssetCode(this.assetCode); + val.setIssuer(this.issuer); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/Asset.java b/src/main/java/org/stellar/sdk/xdr/Asset.java index 9d34821c6..02c6dd642 100644 --- a/src/main/java/org/stellar/sdk/xdr/Asset.java +++ b/src/main/java/org/stellar/sdk/xdr/Asset.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -79,8 +81,8 @@ public Builder alphaNum12(AlphaNum12 alphaNum12) { public Asset build() { Asset val = new Asset(); val.setDiscriminant(discriminant); - val.setAlphaNum4(alphaNum4); - val.setAlphaNum12(alphaNum12); + val.setAlphaNum4(this.alphaNum4); + val.setAlphaNum12(this.alphaNum12); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/AssetCode.java b/src/main/java/org/stellar/sdk/xdr/AssetCode.java index 01b10e264..cbc64cfc3 100644 --- a/src/main/java/org/stellar/sdk/xdr/AssetCode.java +++ b/src/main/java/org/stellar/sdk/xdr/AssetCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -76,8 +78,8 @@ public Builder assetCode12(AssetCode12 assetCode12) { public AssetCode build() { AssetCode val = new AssetCode(); val.setDiscriminant(discriminant); - val.setAssetCode4(assetCode4); - val.setAssetCode12(assetCode12); + val.setAssetCode4(this.assetCode4); + val.setAssetCode12(this.assetCode12); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/AssetCode12.java b/src/main/java/org/stellar/sdk/xdr/AssetCode12.java index 8c8443db5..04567eb0d 100644 --- a/src/main/java/org/stellar/sdk/xdr/AssetCode12.java +++ b/src/main/java/org/stellar/sdk/xdr/AssetCode12.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/org/stellar/sdk/xdr/AssetCode4.java b/src/main/java/org/stellar/sdk/xdr/AssetCode4.java index f2f969c13..306d2030a 100644 --- a/src/main/java/org/stellar/sdk/xdr/AssetCode4.java +++ b/src/main/java/org/stellar/sdk/xdr/AssetCode4.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/org/stellar/sdk/xdr/AssetType.java b/src/main/java/org/stellar/sdk/xdr/AssetType.java index f38574136..15777e107 100644 --- a/src/main/java/org/stellar/sdk/xdr/AssetType.java +++ b/src/main/java/org/stellar/sdk/xdr/AssetType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/Auth.java b/src/main/java/org/stellar/sdk/xdr/Auth.java index 01fffcef8..4322bd92d 100644 --- a/src/main/java/org/stellar/sdk/xdr/Auth.java +++ b/src/main/java/org/stellar/sdk/xdr/Auth.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -10,27 +12,25 @@ // struct Auth // { -// // Empty message, just to confirm -// // establishment of MAC keys. -// int unused; +// int flags; // }; // =========================================================================== public class Auth implements XdrElement { public Auth() {} - private Integer unused; + private Integer flags; - public Integer getUnused() { - return this.unused; + public Integer getFlags() { + return this.flags; } - public void setUnused(Integer value) { - this.unused = value; + public void setFlags(Integer value) { + this.flags = value; } public static void encode(XdrDataOutputStream stream, Auth encodedAuth) throws IOException { - stream.writeInt(encodedAuth.unused); + stream.writeInt(encodedAuth.flags); } public void encode(XdrDataOutputStream stream) throws IOException { @@ -39,13 +39,13 @@ public void encode(XdrDataOutputStream stream) throws IOException { public static Auth decode(XdrDataInputStream stream) throws IOException { Auth decodedAuth = new Auth(); - decodedAuth.unused = stream.readInt(); + decodedAuth.flags = stream.readInt(); return decodedAuth; } @Override public int hashCode() { - return Objects.hashCode(this.unused); + return Objects.hashCode(this.flags); } @Override @@ -55,20 +55,20 @@ public boolean equals(Object object) { } Auth other = (Auth) object; - return Objects.equal(this.unused, other.unused); + return Objects.equal(this.flags, other.flags); } public static final class Builder { - private Integer unused; + private Integer flags; - public Builder unused(Integer unused) { - this.unused = unused; + public Builder flags(Integer flags) { + this.flags = flags; return this; } public Auth build() { Auth val = new Auth(); - val.setUnused(unused); + val.setFlags(this.flags); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/AuthCert.java b/src/main/java/org/stellar/sdk/xdr/AuthCert.java index b3e45abf3..4de722778 100644 --- a/src/main/java/org/stellar/sdk/xdr/AuthCert.java +++ b/src/main/java/org/stellar/sdk/xdr/AuthCert.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -107,9 +109,9 @@ public Builder sig(Signature sig) { public AuthCert build() { AuthCert val = new AuthCert(); - val.setPubkey(pubkey); - val.setExpiration(expiration); - val.setSig(sig); + val.setPubkey(this.pubkey); + val.setExpiration(this.expiration); + val.setSig(this.sig); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/AuthenticatedMessage.java b/src/main/java/org/stellar/sdk/xdr/AuthenticatedMessage.java index 14f30a873..f37fab5f8 100644 --- a/src/main/java/org/stellar/sdk/xdr/AuthenticatedMessage.java +++ b/src/main/java/org/stellar/sdk/xdr/AuthenticatedMessage.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -60,7 +62,7 @@ public Builder v0(AuthenticatedMessageV0 v0) { public AuthenticatedMessage build() { AuthenticatedMessage val = new AuthenticatedMessage(); val.setDiscriminant(discriminant); - val.setV0(v0); + val.setV0(this.v0); return val; } } @@ -201,9 +203,9 @@ public Builder mac(HmacSha256Mac mac) { public AuthenticatedMessageV0 build() { AuthenticatedMessageV0 val = new AuthenticatedMessageV0(); - val.setSequence(sequence); - val.setMessage(message); - val.setMac(mac); + val.setSequence(this.sequence); + val.setMessage(this.message); + val.setMac(this.mac); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesOp.java b/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesOp.java index 1b0d3aa25..0f0053e49 100644 --- a/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesOp.java +++ b/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -71,7 +73,7 @@ public Builder sponsoredID(AccountID sponsoredID) { public BeginSponsoringFutureReservesOp build() { BeginSponsoringFutureReservesOp val = new BeginSponsoringFutureReservesOp(); - val.setSponsoredID(sponsoredID); + val.setSponsoredID(this.sponsoredID); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResult.java b/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResult.java index 8bcf4e4e5..aea6d1dd9 100644 --- a/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResult.java +++ b/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -13,7 +15,9 @@ // { // case BEGIN_SPONSORING_FUTURE_RESERVES_SUCCESS: // void; -// default: +// case BEGIN_SPONSORING_FUTURE_RESERVES_MALFORMED: +// case BEGIN_SPONSORING_FUTURE_RESERVES_ALREADY_SPONSORED: +// case BEGIN_SPONSORING_FUTURE_RESERVES_RECURSIVE: // void; // }; @@ -56,7 +60,9 @@ public static void encode( switch (encodedBeginSponsoringFutureReservesResult.getDiscriminant()) { case BEGIN_SPONSORING_FUTURE_RESERVES_SUCCESS: break; - default: + case BEGIN_SPONSORING_FUTURE_RESERVES_MALFORMED: + case BEGIN_SPONSORING_FUTURE_RESERVES_ALREADY_SPONSORED: + case BEGIN_SPONSORING_FUTURE_RESERVES_RECURSIVE: break; } } @@ -75,7 +81,9 @@ public static BeginSponsoringFutureReservesResult decode(XdrDataInputStream stre switch (decodedBeginSponsoringFutureReservesResult.getDiscriminant()) { case BEGIN_SPONSORING_FUTURE_RESERVES_SUCCESS: break; - default: + case BEGIN_SPONSORING_FUTURE_RESERVES_MALFORMED: + case BEGIN_SPONSORING_FUTURE_RESERVES_ALREADY_SPONSORED: + case BEGIN_SPONSORING_FUTURE_RESERVES_RECURSIVE: break; } return decodedBeginSponsoringFutureReservesResult; diff --git a/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResultCode.java b/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResultCode.java index f0bb13b7e..c7c0cda1c 100644 --- a/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/BucketEntry.java b/src/main/java/org/stellar/sdk/xdr/BucketEntry.java index 3ac3e6069..1db3f00e3 100644 --- a/src/main/java/org/stellar/sdk/xdr/BucketEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/BucketEntry.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -93,9 +95,9 @@ public Builder metaEntry(BucketMetadata metaEntry) { public BucketEntry build() { BucketEntry val = new BucketEntry(); val.setDiscriminant(discriminant); - val.setLiveEntry(liveEntry); - val.setDeadEntry(deadEntry); - val.setMetaEntry(metaEntry); + val.setLiveEntry(this.liveEntry); + val.setDeadEntry(this.deadEntry); + val.setMetaEntry(this.metaEntry); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/BucketEntryType.java b/src/main/java/org/stellar/sdk/xdr/BucketEntryType.java index 1ba7d4ba7..ae31ea954 100644 --- a/src/main/java/org/stellar/sdk/xdr/BucketEntryType.java +++ b/src/main/java/org/stellar/sdk/xdr/BucketEntryType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/BucketMetadata.java b/src/main/java/org/stellar/sdk/xdr/BucketMetadata.java index 161366648..7fc95ff7e 100644 --- a/src/main/java/org/stellar/sdk/xdr/BucketMetadata.java +++ b/src/main/java/org/stellar/sdk/xdr/BucketMetadata.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -95,8 +97,8 @@ public Builder ext(BucketMetadataExt ext) { public BucketMetadata build() { BucketMetadata val = new BucketMetadata(); - val.setLedgerVersion(ledgerVersion); - val.setExt(ext); + val.setLedgerVersion(this.ledgerVersion); + val.setExt(this.ext); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationOp.java b/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationOp.java new file mode 100644 index 000000000..5ba718eba --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationOp.java @@ -0,0 +1,98 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct BumpFootprintExpirationOp +// { +// ExtensionPoint ext; +// uint32 ledgersToExpire; +// }; + +// =========================================================================== +public class BumpFootprintExpirationOp implements XdrElement { + public BumpFootprintExpirationOp() {} + + private ExtensionPoint ext; + + public ExtensionPoint getExt() { + return this.ext; + } + + public void setExt(ExtensionPoint value) { + this.ext = value; + } + + private Uint32 ledgersToExpire; + + public Uint32 getLedgersToExpire() { + return this.ledgersToExpire; + } + + public void setLedgersToExpire(Uint32 value) { + this.ledgersToExpire = value; + } + + public static void encode( + XdrDataOutputStream stream, BumpFootprintExpirationOp encodedBumpFootprintExpirationOp) + throws IOException { + ExtensionPoint.encode(stream, encodedBumpFootprintExpirationOp.ext); + Uint32.encode(stream, encodedBumpFootprintExpirationOp.ledgersToExpire); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static BumpFootprintExpirationOp decode(XdrDataInputStream stream) throws IOException { + BumpFootprintExpirationOp decodedBumpFootprintExpirationOp = new BumpFootprintExpirationOp(); + decodedBumpFootprintExpirationOp.ext = ExtensionPoint.decode(stream); + decodedBumpFootprintExpirationOp.ledgersToExpire = Uint32.decode(stream); + return decodedBumpFootprintExpirationOp; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.ext, this.ledgersToExpire); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof BumpFootprintExpirationOp)) { + return false; + } + + BumpFootprintExpirationOp other = (BumpFootprintExpirationOp) object; + return Objects.equal(this.ext, other.ext) + && Objects.equal(this.ledgersToExpire, other.ledgersToExpire); + } + + public static final class Builder { + private ExtensionPoint ext; + private Uint32 ledgersToExpire; + + public Builder ext(ExtensionPoint ext) { + this.ext = ext; + return this; + } + + public Builder ledgersToExpire(Uint32 ledgersToExpire) { + this.ledgersToExpire = ledgersToExpire; + return this; + } + + public BumpFootprintExpirationOp build() { + BumpFootprintExpirationOp val = new BumpFootprintExpirationOp(); + val.setExt(this.ext); + val.setLedgersToExpire(this.ledgersToExpire); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResult.java b/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResult.java new file mode 100644 index 000000000..286820801 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResult.java @@ -0,0 +1,101 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union BumpFootprintExpirationResult switch (BumpFootprintExpirationResultCode code) +// { +// case BUMP_FOOTPRINT_EXPIRATION_SUCCESS: +// void; +// case BUMP_FOOTPRINT_EXPIRATION_MALFORMED: +// case BUMP_FOOTPRINT_EXPIRATION_RESOURCE_LIMIT_EXCEEDED: +// void; +// }; + +// =========================================================================== +public class BumpFootprintExpirationResult implements XdrElement { + public BumpFootprintExpirationResult() {} + + BumpFootprintExpirationResultCode code; + + public BumpFootprintExpirationResultCode getDiscriminant() { + return this.code; + } + + public void setDiscriminant(BumpFootprintExpirationResultCode value) { + this.code = value; + } + + public static final class Builder { + private BumpFootprintExpirationResultCode discriminant; + + public Builder discriminant(BumpFootprintExpirationResultCode discriminant) { + this.discriminant = discriminant; + return this; + } + + public BumpFootprintExpirationResult build() { + BumpFootprintExpirationResult val = new BumpFootprintExpirationResult(); + val.setDiscriminant(discriminant); + return val; + } + } + + public static void encode( + XdrDataOutputStream stream, + BumpFootprintExpirationResult encodedBumpFootprintExpirationResult) + throws IOException { + // Xdrgen::AST::Identifier + // BumpFootprintExpirationResultCode + stream.writeInt(encodedBumpFootprintExpirationResult.getDiscriminant().getValue()); + switch (encodedBumpFootprintExpirationResult.getDiscriminant()) { + case BUMP_FOOTPRINT_EXPIRATION_SUCCESS: + break; + case BUMP_FOOTPRINT_EXPIRATION_MALFORMED: + case BUMP_FOOTPRINT_EXPIRATION_RESOURCE_LIMIT_EXCEEDED: + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static BumpFootprintExpirationResult decode(XdrDataInputStream stream) throws IOException { + BumpFootprintExpirationResult decodedBumpFootprintExpirationResult = + new BumpFootprintExpirationResult(); + BumpFootprintExpirationResultCode discriminant = + BumpFootprintExpirationResultCode.decode(stream); + decodedBumpFootprintExpirationResult.setDiscriminant(discriminant); + switch (decodedBumpFootprintExpirationResult.getDiscriminant()) { + case BUMP_FOOTPRINT_EXPIRATION_SUCCESS: + break; + case BUMP_FOOTPRINT_EXPIRATION_MALFORMED: + case BUMP_FOOTPRINT_EXPIRATION_RESOURCE_LIMIT_EXCEEDED: + break; + } + return decodedBumpFootprintExpirationResult; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.code); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof BumpFootprintExpirationResult)) { + return false; + } + + BumpFootprintExpirationResult other = (BumpFootprintExpirationResult) object; + return Objects.equal(this.code, other.code); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResultCode.java b/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResultCode.java new file mode 100644 index 000000000..8e33eae94 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResultCode.java @@ -0,0 +1,61 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum BumpFootprintExpirationResultCode +// { +// // codes considered as "success" for the operation +// BUMP_FOOTPRINT_EXPIRATION_SUCCESS = 0, +// +// // codes considered as "failure" for the operation +// BUMP_FOOTPRINT_EXPIRATION_MALFORMED = -1, +// BUMP_FOOTPRINT_EXPIRATION_RESOURCE_LIMIT_EXCEEDED = -2 +// }; + +// =========================================================================== +public enum BumpFootprintExpirationResultCode implements XdrElement { + BUMP_FOOTPRINT_EXPIRATION_SUCCESS(0), + BUMP_FOOTPRINT_EXPIRATION_MALFORMED(-1), + BUMP_FOOTPRINT_EXPIRATION_RESOURCE_LIMIT_EXCEEDED(-2), + ; + private int mValue; + + BumpFootprintExpirationResultCode(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static BumpFootprintExpirationResultCode decode(XdrDataInputStream stream) + throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return BUMP_FOOTPRINT_EXPIRATION_SUCCESS; + case -1: + return BUMP_FOOTPRINT_EXPIRATION_MALFORMED; + case -2: + return BUMP_FOOTPRINT_EXPIRATION_RESOURCE_LIMIT_EXCEEDED; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, BumpFootprintExpirationResultCode value) + throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/BumpSequenceOp.java b/src/main/java/org/stellar/sdk/xdr/BumpSequenceOp.java index ad42446dd..42f7ebb27 100644 --- a/src/main/java/org/stellar/sdk/xdr/BumpSequenceOp.java +++ b/src/main/java/org/stellar/sdk/xdr/BumpSequenceOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -67,7 +69,7 @@ public Builder bumpTo(SequenceNumber bumpTo) { public BumpSequenceOp build() { BumpSequenceOp val = new BumpSequenceOp(); - val.setBumpTo(bumpTo); + val.setBumpTo(this.bumpTo); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/BumpSequenceResult.java b/src/main/java/org/stellar/sdk/xdr/BumpSequenceResult.java index 9dc1d6c38..bda89846d 100644 --- a/src/main/java/org/stellar/sdk/xdr/BumpSequenceResult.java +++ b/src/main/java/org/stellar/sdk/xdr/BumpSequenceResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,7 @@ // { // case BUMP_SEQUENCE_SUCCESS: // void; -// default: +// case BUMP_SEQUENCE_BAD_SEQ: // void; // }; @@ -53,7 +55,7 @@ public static void encode( switch (encodedBumpSequenceResult.getDiscriminant()) { case BUMP_SEQUENCE_SUCCESS: break; - default: + case BUMP_SEQUENCE_BAD_SEQ: break; } } @@ -69,7 +71,7 @@ public static BumpSequenceResult decode(XdrDataInputStream stream) throws IOExce switch (decodedBumpSequenceResult.getDiscriminant()) { case BUMP_SEQUENCE_SUCCESS: break; - default: + case BUMP_SEQUENCE_BAD_SEQ: break; } return decodedBumpSequenceResult; diff --git a/src/main/java/org/stellar/sdk/xdr/BumpSequenceResultCode.java b/src/main/java/org/stellar/sdk/xdr/BumpSequenceResultCode.java index 383f2e3df..f2863fd71 100644 --- a/src/main/java/org/stellar/sdk/xdr/BumpSequenceResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/BumpSequenceResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/ChangeTrustAsset.java b/src/main/java/org/stellar/sdk/xdr/ChangeTrustAsset.java index c5d48291f..3429e5e17 100644 --- a/src/main/java/org/stellar/sdk/xdr/ChangeTrustAsset.java +++ b/src/main/java/org/stellar/sdk/xdr/ChangeTrustAsset.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -98,9 +100,9 @@ public Builder liquidityPool(LiquidityPoolParameters liquidityPool) { public ChangeTrustAsset build() { ChangeTrustAsset val = new ChangeTrustAsset(); val.setDiscriminant(discriminant); - val.setAlphaNum4(alphaNum4); - val.setAlphaNum12(alphaNum12); - val.setLiquidityPool(liquidityPool); + val.setAlphaNum4(this.alphaNum4); + val.setAlphaNum12(this.alphaNum12); + val.setLiquidityPool(this.liquidityPool); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ChangeTrustOp.java b/src/main/java/org/stellar/sdk/xdr/ChangeTrustOp.java index 8a3055e3e..796155609 100644 --- a/src/main/java/org/stellar/sdk/xdr/ChangeTrustOp.java +++ b/src/main/java/org/stellar/sdk/xdr/ChangeTrustOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -88,8 +90,8 @@ public Builder limit(Int64 limit) { public ChangeTrustOp build() { ChangeTrustOp val = new ChangeTrustOp(); - val.setLine(line); - val.setLimit(limit); + val.setLine(this.line); + val.setLimit(this.limit); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ChangeTrustResult.java b/src/main/java/org/stellar/sdk/xdr/ChangeTrustResult.java index 2036a730d..1b4b2671b 100644 --- a/src/main/java/org/stellar/sdk/xdr/ChangeTrustResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ChangeTrustResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,14 @@ // { // case CHANGE_TRUST_SUCCESS: // void; -// default: +// case CHANGE_TRUST_MALFORMED: +// case CHANGE_TRUST_NO_ISSUER: +// case CHANGE_TRUST_INVALID_LIMIT: +// case CHANGE_TRUST_LOW_RESERVE: +// case CHANGE_TRUST_SELF_NOT_ALLOWED: +// case CHANGE_TRUST_TRUST_LINE_MISSING: +// case CHANGE_TRUST_CANNOT_DELETE: +// case CHANGE_TRUST_NOT_AUTH_MAINTAIN_LIABILITIES: // void; // }; @@ -53,7 +62,14 @@ public static void encode(XdrDataOutputStream stream, ChangeTrustResult encodedC switch (encodedChangeTrustResult.getDiscriminant()) { case CHANGE_TRUST_SUCCESS: break; - default: + case CHANGE_TRUST_MALFORMED: + case CHANGE_TRUST_NO_ISSUER: + case CHANGE_TRUST_INVALID_LIMIT: + case CHANGE_TRUST_LOW_RESERVE: + case CHANGE_TRUST_SELF_NOT_ALLOWED: + case CHANGE_TRUST_TRUST_LINE_MISSING: + case CHANGE_TRUST_CANNOT_DELETE: + case CHANGE_TRUST_NOT_AUTH_MAINTAIN_LIABILITIES: break; } } @@ -69,7 +85,14 @@ public static ChangeTrustResult decode(XdrDataInputStream stream) throws IOExcep switch (decodedChangeTrustResult.getDiscriminant()) { case CHANGE_TRUST_SUCCESS: break; - default: + case CHANGE_TRUST_MALFORMED: + case CHANGE_TRUST_NO_ISSUER: + case CHANGE_TRUST_INVALID_LIMIT: + case CHANGE_TRUST_LOW_RESERVE: + case CHANGE_TRUST_SELF_NOT_ALLOWED: + case CHANGE_TRUST_TRUST_LINE_MISSING: + case CHANGE_TRUST_CANNOT_DELETE: + case CHANGE_TRUST_NOT_AUTH_MAINTAIN_LIABILITIES: break; } return decodedChangeTrustResult; diff --git a/src/main/java/org/stellar/sdk/xdr/ChangeTrustResultCode.java b/src/main/java/org/stellar/sdk/xdr/ChangeTrustResultCode.java index c1a733784..3cd497a15 100644 --- a/src/main/java/org/stellar/sdk/xdr/ChangeTrustResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ChangeTrustResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimAtom.java b/src/main/java/org/stellar/sdk/xdr/ClaimAtom.java index 6211d89d7..be5afcca3 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimAtom.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimAtom.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -91,9 +93,9 @@ public Builder liquidityPool(ClaimLiquidityAtom liquidityPool) { public ClaimAtom build() { ClaimAtom val = new ClaimAtom(); val.setDiscriminant(discriminant); - val.setV0(v0); - val.setOrderBook(orderBook); - val.setLiquidityPool(liquidityPool); + val.setV0(this.v0); + val.setOrderBook(this.orderBook); + val.setLiquidityPool(this.liquidityPool); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimAtomType.java b/src/main/java/org/stellar/sdk/xdr/ClaimAtomType.java index bd1dd5452..cabffa386 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimAtomType.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimAtomType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceOp.java b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceOp.java index 3ae5c1d8c..295b81f79 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceOp.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -68,7 +70,7 @@ public Builder balanceID(ClaimableBalanceID balanceID) { public ClaimClaimableBalanceOp build() { ClaimClaimableBalanceOp val = new ClaimClaimableBalanceOp(); - val.setBalanceID(balanceID); + val.setBalanceID(this.balanceID); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResult.java b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResult.java index 3f259d543..2d14c10de 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,11 @@ // { // case CLAIM_CLAIMABLE_BALANCE_SUCCESS: // void; -// default: +// case CLAIM_CLAIMABLE_BALANCE_DOES_NOT_EXIST: +// case CLAIM_CLAIMABLE_BALANCE_CANNOT_CLAIM: +// case CLAIM_CLAIMABLE_BALANCE_LINE_FULL: +// case CLAIM_CLAIMABLE_BALANCE_NO_TRUST: +// case CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED: // void; // }; @@ -54,7 +60,11 @@ public static void encode( switch (encodedClaimClaimableBalanceResult.getDiscriminant()) { case CLAIM_CLAIMABLE_BALANCE_SUCCESS: break; - default: + case CLAIM_CLAIMABLE_BALANCE_DOES_NOT_EXIST: + case CLAIM_CLAIMABLE_BALANCE_CANNOT_CLAIM: + case CLAIM_CLAIMABLE_BALANCE_LINE_FULL: + case CLAIM_CLAIMABLE_BALANCE_NO_TRUST: + case CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED: break; } } @@ -71,7 +81,11 @@ public static ClaimClaimableBalanceResult decode(XdrDataInputStream stream) thro switch (decodedClaimClaimableBalanceResult.getDiscriminant()) { case CLAIM_CLAIMABLE_BALANCE_SUCCESS: break; - default: + case CLAIM_CLAIMABLE_BALANCE_DOES_NOT_EXIST: + case CLAIM_CLAIMABLE_BALANCE_CANNOT_CLAIM: + case CLAIM_CLAIMABLE_BALANCE_LINE_FULL: + case CLAIM_CLAIMABLE_BALANCE_NO_TRUST: + case CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED: break; } return decodedClaimClaimableBalanceResult; diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResultCode.java b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResultCode.java index c70a97a60..64d4ad25a 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ @@ -15,7 +17,6 @@ // CLAIM_CLAIMABLE_BALANCE_LINE_FULL = -3, // CLAIM_CLAIMABLE_BALANCE_NO_TRUST = -4, // CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED = -5 -// // }; // =========================================================================== diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimLiquidityAtom.java b/src/main/java/org/stellar/sdk/xdr/ClaimLiquidityAtom.java index a7c4642cf..388799459 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimLiquidityAtom.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimLiquidityAtom.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -152,11 +154,11 @@ public Builder amountBought(Int64 amountBought) { public ClaimLiquidityAtom build() { ClaimLiquidityAtom val = new ClaimLiquidityAtom(); - val.setLiquidityPoolID(liquidityPoolID); - val.setAssetSold(assetSold); - val.setAmountSold(amountSold); - val.setAssetBought(assetBought); - val.setAmountBought(amountBought); + val.setLiquidityPoolID(this.liquidityPoolID); + val.setAssetSold(this.assetSold); + val.setAmountSold(this.amountSold); + val.setAssetBought(this.assetBought); + val.setAmountBought(this.amountBought); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtom.java b/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtom.java index 9bbc4aae1..7010f3c86 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtom.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtom.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -178,12 +180,12 @@ public Builder amountBought(Int64 amountBought) { public ClaimOfferAtom build() { ClaimOfferAtom val = new ClaimOfferAtom(); - val.setSellerID(sellerID); - val.setOfferID(offerID); - val.setAssetSold(assetSold); - val.setAmountSold(amountSold); - val.setAssetBought(assetBought); - val.setAmountBought(amountBought); + val.setSellerID(this.sellerID); + val.setOfferID(this.offerID); + val.setAssetSold(this.assetSold); + val.setAmountSold(this.amountSold); + val.setAssetBought(this.assetBought); + val.setAmountBought(this.amountBought); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtomV0.java b/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtomV0.java index bdb8e7228..649135d75 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtomV0.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtomV0.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -178,12 +180,12 @@ public Builder amountBought(Int64 amountBought) { public ClaimOfferAtomV0 build() { ClaimOfferAtomV0 val = new ClaimOfferAtomV0(); - val.setSellerEd25519(sellerEd25519); - val.setOfferID(offerID); - val.setAssetSold(assetSold); - val.setAmountSold(amountSold); - val.setAssetBought(assetBought); - val.setAmountBought(amountBought); + val.setSellerEd25519(this.sellerEd25519); + val.setOfferID(this.offerID); + val.setAssetSold(this.assetSold); + val.setAmountSold(this.amountSold); + val.setAssetBought(this.assetBought); + val.setAmountBought(this.amountBought); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimPredicate.java b/src/main/java/org/stellar/sdk/xdr/ClaimPredicate.java index 04af0caf3..84da08ecb 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimPredicate.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimPredicate.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -131,11 +133,11 @@ public Builder relBefore(Int64 relBefore) { public ClaimPredicate build() { ClaimPredicate val = new ClaimPredicate(); val.setDiscriminant(discriminant); - val.setAndPredicates(andPredicates); - val.setOrPredicates(orPredicates); - val.setNotPredicate(notPredicate); - val.setAbsBefore(absBefore); - val.setRelBefore(relBefore); + val.setAndPredicates(this.andPredicates); + val.setOrPredicates(this.orPredicates); + val.setNotPredicate(this.notPredicate); + val.setAbsBefore(this.absBefore); + val.setRelBefore(this.relBefore); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimPredicateType.java b/src/main/java/org/stellar/sdk/xdr/ClaimPredicateType.java index 69bcfdda6..1896dfaa2 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimPredicateType.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimPredicateType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntry.java b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntry.java index 9546a9994..13f57ae2f 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntry.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -174,11 +176,11 @@ public Builder ext(ClaimableBalanceEntryExt ext) { public ClaimableBalanceEntry build() { ClaimableBalanceEntry val = new ClaimableBalanceEntry(); - val.setBalanceID(balanceID); - val.setClaimants(claimants); - val.setAsset(asset); - val.setAmount(amount); - val.setExt(ext); + val.setBalanceID(this.balanceID); + val.setClaimants(this.claimants); + val.setAsset(this.asset); + val.setAmount(this.amount); + val.setExt(this.ext); return val; } } @@ -223,7 +225,7 @@ public Builder v1(ClaimableBalanceEntryExtensionV1 v1) { public ClaimableBalanceEntryExt build() { ClaimableBalanceEntryExt val = new ClaimableBalanceEntryExt(); val.setDiscriminant(discriminant); - val.setV1(v1); + val.setV1(this.v1); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntryExtensionV1.java b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntryExtensionV1.java index ea2214d17..44dcd484c 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntryExtensionV1.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntryExtensionV1.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -97,8 +99,8 @@ public Builder flags(Uint32 flags) { public ClaimableBalanceEntryExtensionV1 build() { ClaimableBalanceEntryExtensionV1 val = new ClaimableBalanceEntryExtensionV1(); - val.setExt(ext); - val.setFlags(flags); + val.setExt(this.ext); + val.setFlags(this.flags); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceFlags.java b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceFlags.java index 709c9b22a..11b85d6f0 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceFlags.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceFlags.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceID.java b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceID.java index 9ffb93ce9..7fc4f4d8e 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceID.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceID.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -55,7 +57,7 @@ public Builder v0(Hash v0) { public ClaimableBalanceID build() { ClaimableBalanceID val = new ClaimableBalanceID(); val.setDiscriminant(discriminant); - val.setV0(v0); + val.setV0(this.v0); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceIDType.java b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceIDType.java index 31c5e13f8..df62c8154 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceIDType.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceIDType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/Claimant.java b/src/main/java/org/stellar/sdk/xdr/Claimant.java index 032941beb..df2334477 100644 --- a/src/main/java/org/stellar/sdk/xdr/Claimant.java +++ b/src/main/java/org/stellar/sdk/xdr/Claimant.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -59,7 +61,7 @@ public Builder v0(ClaimantV0 v0) { public Claimant build() { Claimant val = new Claimant(); val.setDiscriminant(discriminant); - val.setV0(v0); + val.setV0(this.v0); return val; } } @@ -179,8 +181,8 @@ public Builder predicate(ClaimPredicate predicate) { public ClaimantV0 build() { ClaimantV0 val = new ClaimantV0(); - val.setDestination(destination); - val.setPredicate(predicate); + val.setDestination(this.destination); + val.setPredicate(this.predicate); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimantType.java b/src/main/java/org/stellar/sdk/xdr/ClaimantType.java index 0a4f68a09..cc0eed652 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimantType.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimantType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceOp.java b/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceOp.java index 4984f1cd6..4fdcf6b9e 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceOp.java +++ b/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -68,7 +70,7 @@ public Builder balanceID(ClaimableBalanceID balanceID) { public ClawbackClaimableBalanceOp build() { ClawbackClaimableBalanceOp val = new ClawbackClaimableBalanceOp(); - val.setBalanceID(balanceID); + val.setBalanceID(this.balanceID); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResult.java b/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResult.java index ce389eff5..97dcbad82 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -13,7 +15,9 @@ // { // case CLAWBACK_CLAIMABLE_BALANCE_SUCCESS: // void; -// default: +// case CLAWBACK_CLAIMABLE_BALANCE_DOES_NOT_EXIST: +// case CLAWBACK_CLAIMABLE_BALANCE_NOT_ISSUER: +// case CLAWBACK_CLAIMABLE_BALANCE_NOT_CLAWBACK_ENABLED: // void; // }; @@ -56,7 +60,9 @@ public static void encode( switch (encodedClawbackClaimableBalanceResult.getDiscriminant()) { case CLAWBACK_CLAIMABLE_BALANCE_SUCCESS: break; - default: + case CLAWBACK_CLAIMABLE_BALANCE_DOES_NOT_EXIST: + case CLAWBACK_CLAIMABLE_BALANCE_NOT_ISSUER: + case CLAWBACK_CLAIMABLE_BALANCE_NOT_CLAWBACK_ENABLED: break; } } @@ -75,7 +81,9 @@ public static ClawbackClaimableBalanceResult decode(XdrDataInputStream stream) switch (decodedClawbackClaimableBalanceResult.getDiscriminant()) { case CLAWBACK_CLAIMABLE_BALANCE_SUCCESS: break; - default: + case CLAWBACK_CLAIMABLE_BALANCE_DOES_NOT_EXIST: + case CLAWBACK_CLAIMABLE_BALANCE_NOT_ISSUER: + case CLAWBACK_CLAIMABLE_BALANCE_NOT_CLAWBACK_ENABLED: break; } return decodedClawbackClaimableBalanceResult; diff --git a/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResultCode.java b/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResultCode.java index 007a6d0e3..cd14746a6 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/ClawbackOp.java b/src/main/java/org/stellar/sdk/xdr/ClawbackOp.java index c5a7d93e5..3ba348c99 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClawbackOp.java +++ b/src/main/java/org/stellar/sdk/xdr/ClawbackOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -107,9 +109,9 @@ public Builder amount(Int64 amount) { public ClawbackOp build() { ClawbackOp val = new ClawbackOp(); - val.setAsset(asset); - val.setFrom(from); - val.setAmount(amount); + val.setAsset(this.asset); + val.setFrom(this.from); + val.setAmount(this.amount); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClawbackResult.java b/src/main/java/org/stellar/sdk/xdr/ClawbackResult.java index 69fbce6af..d228e8931 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClawbackResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ClawbackResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,10 @@ // { // case CLAWBACK_SUCCESS: // void; -// default: +// case CLAWBACK_MALFORMED: +// case CLAWBACK_NOT_CLAWBACK_ENABLED: +// case CLAWBACK_NO_TRUST: +// case CLAWBACK_UNDERFUNDED: // void; // }; @@ -53,7 +58,10 @@ public static void encode(XdrDataOutputStream stream, ClawbackResult encodedClaw switch (encodedClawbackResult.getDiscriminant()) { case CLAWBACK_SUCCESS: break; - default: + case CLAWBACK_MALFORMED: + case CLAWBACK_NOT_CLAWBACK_ENABLED: + case CLAWBACK_NO_TRUST: + case CLAWBACK_UNDERFUNDED: break; } } @@ -69,7 +77,10 @@ public static ClawbackResult decode(XdrDataInputStream stream) throws IOExceptio switch (decodedClawbackResult.getDiscriminant()) { case CLAWBACK_SUCCESS: break; - default: + case CLAWBACK_MALFORMED: + case CLAWBACK_NOT_CLAWBACK_ENABLED: + case CLAWBACK_NO_TRUST: + case CLAWBACK_UNDERFUNDED: break; } return decodedClawbackResult; diff --git a/src/main/java/org/stellar/sdk/xdr/ClawbackResultCode.java b/src/main/java/org/stellar/sdk/xdr/ClawbackResultCode.java index cbd7f11f7..bb0ad1406 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClawbackResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ClawbackResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractBandwidthV0.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractBandwidthV0.java new file mode 100644 index 000000000..91a6ab982 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractBandwidthV0.java @@ -0,0 +1,127 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct ConfigSettingContractBandwidthV0 +// { +// // Maximum size in bytes to propagate per ledger +// uint32 ledgerMaxPropagateSizeBytes; +// // Maximum size in bytes for a transaction +// uint32 txMaxSizeBytes; +// +// // Fee for propagating 1KB of data +// int64 feePropagateData1KB; +// }; + +// =========================================================================== +public class ConfigSettingContractBandwidthV0 implements XdrElement { + public ConfigSettingContractBandwidthV0() {} + + private Uint32 ledgerMaxPropagateSizeBytes; + + public Uint32 getLedgerMaxPropagateSizeBytes() { + return this.ledgerMaxPropagateSizeBytes; + } + + public void setLedgerMaxPropagateSizeBytes(Uint32 value) { + this.ledgerMaxPropagateSizeBytes = value; + } + + private Uint32 txMaxSizeBytes; + + public Uint32 getTxMaxSizeBytes() { + return this.txMaxSizeBytes; + } + + public void setTxMaxSizeBytes(Uint32 value) { + this.txMaxSizeBytes = value; + } + + private Int64 feePropagateData1KB; + + public Int64 getFeePropagateData1KB() { + return this.feePropagateData1KB; + } + + public void setFeePropagateData1KB(Int64 value) { + this.feePropagateData1KB = value; + } + + public static void encode( + XdrDataOutputStream stream, + ConfigSettingContractBandwidthV0 encodedConfigSettingContractBandwidthV0) + throws IOException { + Uint32.encode(stream, encodedConfigSettingContractBandwidthV0.ledgerMaxPropagateSizeBytes); + Uint32.encode(stream, encodedConfigSettingContractBandwidthV0.txMaxSizeBytes); + Int64.encode(stream, encodedConfigSettingContractBandwidthV0.feePropagateData1KB); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ConfigSettingContractBandwidthV0 decode(XdrDataInputStream stream) + throws IOException { + ConfigSettingContractBandwidthV0 decodedConfigSettingContractBandwidthV0 = + new ConfigSettingContractBandwidthV0(); + decodedConfigSettingContractBandwidthV0.ledgerMaxPropagateSizeBytes = Uint32.decode(stream); + decodedConfigSettingContractBandwidthV0.txMaxSizeBytes = Uint32.decode(stream); + decodedConfigSettingContractBandwidthV0.feePropagateData1KB = Int64.decode(stream); + return decodedConfigSettingContractBandwidthV0; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.ledgerMaxPropagateSizeBytes, this.txMaxSizeBytes, this.feePropagateData1KB); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ConfigSettingContractBandwidthV0)) { + return false; + } + + ConfigSettingContractBandwidthV0 other = (ConfigSettingContractBandwidthV0) object; + return Objects.equal(this.ledgerMaxPropagateSizeBytes, other.ledgerMaxPropagateSizeBytes) + && Objects.equal(this.txMaxSizeBytes, other.txMaxSizeBytes) + && Objects.equal(this.feePropagateData1KB, other.feePropagateData1KB); + } + + public static final class Builder { + private Uint32 ledgerMaxPropagateSizeBytes; + private Uint32 txMaxSizeBytes; + private Int64 feePropagateData1KB; + + public Builder ledgerMaxPropagateSizeBytes(Uint32 ledgerMaxPropagateSizeBytes) { + this.ledgerMaxPropagateSizeBytes = ledgerMaxPropagateSizeBytes; + return this; + } + + public Builder txMaxSizeBytes(Uint32 txMaxSizeBytes) { + this.txMaxSizeBytes = txMaxSizeBytes; + return this; + } + + public Builder feePropagateData1KB(Int64 feePropagateData1KB) { + this.feePropagateData1KB = feePropagateData1KB; + return this; + } + + public ConfigSettingContractBandwidthV0 build() { + ConfigSettingContractBandwidthV0 val = new ConfigSettingContractBandwidthV0(); + val.setLedgerMaxPropagateSizeBytes(this.ledgerMaxPropagateSizeBytes); + val.setTxMaxSizeBytes(this.txMaxSizeBytes); + val.setFeePropagateData1KB(this.feePropagateData1KB); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractComputeV0.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractComputeV0.java new file mode 100644 index 000000000..b0b77fc96 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractComputeV0.java @@ -0,0 +1,154 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct ConfigSettingContractComputeV0 +// { +// // Maximum instructions per ledger +// int64 ledgerMaxInstructions; +// // Maximum instructions per transaction +// int64 txMaxInstructions; +// // Cost of 10000 instructions +// int64 feeRatePerInstructionsIncrement; +// +// // Memory limit per transaction. Unlike instructions, there is no fee +// // for memory, just the limit. +// uint32 txMemoryLimit; +// }; + +// =========================================================================== +public class ConfigSettingContractComputeV0 implements XdrElement { + public ConfigSettingContractComputeV0() {} + + private Int64 ledgerMaxInstructions; + + public Int64 getLedgerMaxInstructions() { + return this.ledgerMaxInstructions; + } + + public void setLedgerMaxInstructions(Int64 value) { + this.ledgerMaxInstructions = value; + } + + private Int64 txMaxInstructions; + + public Int64 getTxMaxInstructions() { + return this.txMaxInstructions; + } + + public void setTxMaxInstructions(Int64 value) { + this.txMaxInstructions = value; + } + + private Int64 feeRatePerInstructionsIncrement; + + public Int64 getFeeRatePerInstructionsIncrement() { + return this.feeRatePerInstructionsIncrement; + } + + public void setFeeRatePerInstructionsIncrement(Int64 value) { + this.feeRatePerInstructionsIncrement = value; + } + + private Uint32 txMemoryLimit; + + public Uint32 getTxMemoryLimit() { + return this.txMemoryLimit; + } + + public void setTxMemoryLimit(Uint32 value) { + this.txMemoryLimit = value; + } + + public static void encode( + XdrDataOutputStream stream, + ConfigSettingContractComputeV0 encodedConfigSettingContractComputeV0) + throws IOException { + Int64.encode(stream, encodedConfigSettingContractComputeV0.ledgerMaxInstructions); + Int64.encode(stream, encodedConfigSettingContractComputeV0.txMaxInstructions); + Int64.encode(stream, encodedConfigSettingContractComputeV0.feeRatePerInstructionsIncrement); + Uint32.encode(stream, encodedConfigSettingContractComputeV0.txMemoryLimit); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ConfigSettingContractComputeV0 decode(XdrDataInputStream stream) + throws IOException { + ConfigSettingContractComputeV0 decodedConfigSettingContractComputeV0 = + new ConfigSettingContractComputeV0(); + decodedConfigSettingContractComputeV0.ledgerMaxInstructions = Int64.decode(stream); + decodedConfigSettingContractComputeV0.txMaxInstructions = Int64.decode(stream); + decodedConfigSettingContractComputeV0.feeRatePerInstructionsIncrement = Int64.decode(stream); + decodedConfigSettingContractComputeV0.txMemoryLimit = Uint32.decode(stream); + return decodedConfigSettingContractComputeV0; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.ledgerMaxInstructions, + this.txMaxInstructions, + this.feeRatePerInstructionsIncrement, + this.txMemoryLimit); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ConfigSettingContractComputeV0)) { + return false; + } + + ConfigSettingContractComputeV0 other = (ConfigSettingContractComputeV0) object; + return Objects.equal(this.ledgerMaxInstructions, other.ledgerMaxInstructions) + && Objects.equal(this.txMaxInstructions, other.txMaxInstructions) + && Objects.equal( + this.feeRatePerInstructionsIncrement, other.feeRatePerInstructionsIncrement) + && Objects.equal(this.txMemoryLimit, other.txMemoryLimit); + } + + public static final class Builder { + private Int64 ledgerMaxInstructions; + private Int64 txMaxInstructions; + private Int64 feeRatePerInstructionsIncrement; + private Uint32 txMemoryLimit; + + public Builder ledgerMaxInstructions(Int64 ledgerMaxInstructions) { + this.ledgerMaxInstructions = ledgerMaxInstructions; + return this; + } + + public Builder txMaxInstructions(Int64 txMaxInstructions) { + this.txMaxInstructions = txMaxInstructions; + return this; + } + + public Builder feeRatePerInstructionsIncrement(Int64 feeRatePerInstructionsIncrement) { + this.feeRatePerInstructionsIncrement = feeRatePerInstructionsIncrement; + return this; + } + + public Builder txMemoryLimit(Uint32 txMemoryLimit) { + this.txMemoryLimit = txMemoryLimit; + return this; + } + + public ConfigSettingContractComputeV0 build() { + ConfigSettingContractComputeV0 val = new ConfigSettingContractComputeV0(); + val.setLedgerMaxInstructions(this.ledgerMaxInstructions); + val.setTxMaxInstructions(this.txMaxInstructions); + val.setFeeRatePerInstructionsIncrement(this.feeRatePerInstructionsIncrement); + val.setTxMemoryLimit(this.txMemoryLimit); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractExecutionLanesV0.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractExecutionLanesV0.java new file mode 100644 index 000000000..be130f4d2 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractExecutionLanesV0.java @@ -0,0 +1,81 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct ConfigSettingContractExecutionLanesV0 +// { +// // maximum number of Soroban transactions per ledger +// uint32 ledgerMaxTxCount; +// }; + +// =========================================================================== +public class ConfigSettingContractExecutionLanesV0 implements XdrElement { + public ConfigSettingContractExecutionLanesV0() {} + + private Uint32 ledgerMaxTxCount; + + public Uint32 getLedgerMaxTxCount() { + return this.ledgerMaxTxCount; + } + + public void setLedgerMaxTxCount(Uint32 value) { + this.ledgerMaxTxCount = value; + } + + public static void encode( + XdrDataOutputStream stream, + ConfigSettingContractExecutionLanesV0 encodedConfigSettingContractExecutionLanesV0) + throws IOException { + Uint32.encode(stream, encodedConfigSettingContractExecutionLanesV0.ledgerMaxTxCount); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ConfigSettingContractExecutionLanesV0 decode(XdrDataInputStream stream) + throws IOException { + ConfigSettingContractExecutionLanesV0 decodedConfigSettingContractExecutionLanesV0 = + new ConfigSettingContractExecutionLanesV0(); + decodedConfigSettingContractExecutionLanesV0.ledgerMaxTxCount = Uint32.decode(stream); + return decodedConfigSettingContractExecutionLanesV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.ledgerMaxTxCount); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ConfigSettingContractExecutionLanesV0)) { + return false; + } + + ConfigSettingContractExecutionLanesV0 other = (ConfigSettingContractExecutionLanesV0) object; + return Objects.equal(this.ledgerMaxTxCount, other.ledgerMaxTxCount); + } + + public static final class Builder { + private Uint32 ledgerMaxTxCount; + + public Builder ledgerMaxTxCount(Uint32 ledgerMaxTxCount) { + this.ledgerMaxTxCount = ledgerMaxTxCount; + return this; + } + + public ConfigSettingContractExecutionLanesV0 build() { + ConfigSettingContractExecutionLanesV0 val = new ConfigSettingContractExecutionLanesV0(); + val.setLedgerMaxTxCount(this.ledgerMaxTxCount); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractHistoricalDataV0.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractHistoricalDataV0.java new file mode 100644 index 000000000..630a5a83c --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractHistoricalDataV0.java @@ -0,0 +1,80 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct ConfigSettingContractHistoricalDataV0 +// { +// int64 feeHistorical1KB; // Fee for storing 1KB in archives +// }; + +// =========================================================================== +public class ConfigSettingContractHistoricalDataV0 implements XdrElement { + public ConfigSettingContractHistoricalDataV0() {} + + private Int64 feeHistorical1KB; + + public Int64 getFeeHistorical1KB() { + return this.feeHistorical1KB; + } + + public void setFeeHistorical1KB(Int64 value) { + this.feeHistorical1KB = value; + } + + public static void encode( + XdrDataOutputStream stream, + ConfigSettingContractHistoricalDataV0 encodedConfigSettingContractHistoricalDataV0) + throws IOException { + Int64.encode(stream, encodedConfigSettingContractHistoricalDataV0.feeHistorical1KB); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ConfigSettingContractHistoricalDataV0 decode(XdrDataInputStream stream) + throws IOException { + ConfigSettingContractHistoricalDataV0 decodedConfigSettingContractHistoricalDataV0 = + new ConfigSettingContractHistoricalDataV0(); + decodedConfigSettingContractHistoricalDataV0.feeHistorical1KB = Int64.decode(stream); + return decodedConfigSettingContractHistoricalDataV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.feeHistorical1KB); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ConfigSettingContractHistoricalDataV0)) { + return false; + } + + ConfigSettingContractHistoricalDataV0 other = (ConfigSettingContractHistoricalDataV0) object; + return Objects.equal(this.feeHistorical1KB, other.feeHistorical1KB); + } + + public static final class Builder { + private Int64 feeHistorical1KB; + + public Builder feeHistorical1KB(Int64 feeHistorical1KB) { + this.feeHistorical1KB = feeHistorical1KB; + return this; + } + + public ConfigSettingContractHistoricalDataV0 build() { + ConfigSettingContractHistoricalDataV0 val = new ConfigSettingContractHistoricalDataV0(); + val.setFeeHistorical1KB(this.feeHistorical1KB); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractLedgerCostV0.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractLedgerCostV0.java new file mode 100644 index 000000000..51abdb861 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractLedgerCostV0.java @@ -0,0 +1,427 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct ConfigSettingContractLedgerCostV0 +// { +// // Maximum number of ledger entry read operations per ledger +// uint32 ledgerMaxReadLedgerEntries; +// // Maximum number of bytes that can be read per ledger +// uint32 ledgerMaxReadBytes; +// // Maximum number of ledger entry write operations per ledger +// uint32 ledgerMaxWriteLedgerEntries; +// // Maximum number of bytes that can be written per ledger +// uint32 ledgerMaxWriteBytes; +// +// // Maximum number of ledger entry read operations per transaction +// uint32 txMaxReadLedgerEntries; +// // Maximum number of bytes that can be read per transaction +// uint32 txMaxReadBytes; +// // Maximum number of ledger entry write operations per transaction +// uint32 txMaxWriteLedgerEntries; +// // Maximum number of bytes that can be written per transaction +// uint32 txMaxWriteBytes; +// +// int64 feeReadLedgerEntry; // Fee per ledger entry read +// int64 feeWriteLedgerEntry; // Fee per ledger entry write +// +// int64 feeRead1KB; // Fee for reading 1KB +// int64 feeWrite1KB; // Fee for writing 1KB +// +// // Bucket list fees grow slowly up to that size +// int64 bucketListSizeBytes; +// // Fee rate in stroops when the bucket list is empty +// int64 bucketListFeeRateLow; +// // Fee rate in stroops when the bucket list reached bucketListSizeBytes +// int64 bucketListFeeRateHigh; +// // Rate multiplier for any additional data past the first bucketListSizeBytes +// uint32 bucketListGrowthFactor; +// }; + +// =========================================================================== +public class ConfigSettingContractLedgerCostV0 implements XdrElement { + public ConfigSettingContractLedgerCostV0() {} + + private Uint32 ledgerMaxReadLedgerEntries; + + public Uint32 getLedgerMaxReadLedgerEntries() { + return this.ledgerMaxReadLedgerEntries; + } + + public void setLedgerMaxReadLedgerEntries(Uint32 value) { + this.ledgerMaxReadLedgerEntries = value; + } + + private Uint32 ledgerMaxReadBytes; + + public Uint32 getLedgerMaxReadBytes() { + return this.ledgerMaxReadBytes; + } + + public void setLedgerMaxReadBytes(Uint32 value) { + this.ledgerMaxReadBytes = value; + } + + private Uint32 ledgerMaxWriteLedgerEntries; + + public Uint32 getLedgerMaxWriteLedgerEntries() { + return this.ledgerMaxWriteLedgerEntries; + } + + public void setLedgerMaxWriteLedgerEntries(Uint32 value) { + this.ledgerMaxWriteLedgerEntries = value; + } + + private Uint32 ledgerMaxWriteBytes; + + public Uint32 getLedgerMaxWriteBytes() { + return this.ledgerMaxWriteBytes; + } + + public void setLedgerMaxWriteBytes(Uint32 value) { + this.ledgerMaxWriteBytes = value; + } + + private Uint32 txMaxReadLedgerEntries; + + public Uint32 getTxMaxReadLedgerEntries() { + return this.txMaxReadLedgerEntries; + } + + public void setTxMaxReadLedgerEntries(Uint32 value) { + this.txMaxReadLedgerEntries = value; + } + + private Uint32 txMaxReadBytes; + + public Uint32 getTxMaxReadBytes() { + return this.txMaxReadBytes; + } + + public void setTxMaxReadBytes(Uint32 value) { + this.txMaxReadBytes = value; + } + + private Uint32 txMaxWriteLedgerEntries; + + public Uint32 getTxMaxWriteLedgerEntries() { + return this.txMaxWriteLedgerEntries; + } + + public void setTxMaxWriteLedgerEntries(Uint32 value) { + this.txMaxWriteLedgerEntries = value; + } + + private Uint32 txMaxWriteBytes; + + public Uint32 getTxMaxWriteBytes() { + return this.txMaxWriteBytes; + } + + public void setTxMaxWriteBytes(Uint32 value) { + this.txMaxWriteBytes = value; + } + + private Int64 feeReadLedgerEntry; + + public Int64 getFeeReadLedgerEntry() { + return this.feeReadLedgerEntry; + } + + public void setFeeReadLedgerEntry(Int64 value) { + this.feeReadLedgerEntry = value; + } + + private Int64 feeWriteLedgerEntry; + + public Int64 getFeeWriteLedgerEntry() { + return this.feeWriteLedgerEntry; + } + + public void setFeeWriteLedgerEntry(Int64 value) { + this.feeWriteLedgerEntry = value; + } + + private Int64 feeRead1KB; + + public Int64 getFeeRead1KB() { + return this.feeRead1KB; + } + + public void setFeeRead1KB(Int64 value) { + this.feeRead1KB = value; + } + + private Int64 feeWrite1KB; + + public Int64 getFeeWrite1KB() { + return this.feeWrite1KB; + } + + public void setFeeWrite1KB(Int64 value) { + this.feeWrite1KB = value; + } + + private Int64 bucketListSizeBytes; + + public Int64 getBucketListSizeBytes() { + return this.bucketListSizeBytes; + } + + public void setBucketListSizeBytes(Int64 value) { + this.bucketListSizeBytes = value; + } + + private Int64 bucketListFeeRateLow; + + public Int64 getBucketListFeeRateLow() { + return this.bucketListFeeRateLow; + } + + public void setBucketListFeeRateLow(Int64 value) { + this.bucketListFeeRateLow = value; + } + + private Int64 bucketListFeeRateHigh; + + public Int64 getBucketListFeeRateHigh() { + return this.bucketListFeeRateHigh; + } + + public void setBucketListFeeRateHigh(Int64 value) { + this.bucketListFeeRateHigh = value; + } + + private Uint32 bucketListGrowthFactor; + + public Uint32 getBucketListGrowthFactor() { + return this.bucketListGrowthFactor; + } + + public void setBucketListGrowthFactor(Uint32 value) { + this.bucketListGrowthFactor = value; + } + + public static void encode( + XdrDataOutputStream stream, + ConfigSettingContractLedgerCostV0 encodedConfigSettingContractLedgerCostV0) + throws IOException { + Uint32.encode(stream, encodedConfigSettingContractLedgerCostV0.ledgerMaxReadLedgerEntries); + Uint32.encode(stream, encodedConfigSettingContractLedgerCostV0.ledgerMaxReadBytes); + Uint32.encode(stream, encodedConfigSettingContractLedgerCostV0.ledgerMaxWriteLedgerEntries); + Uint32.encode(stream, encodedConfigSettingContractLedgerCostV0.ledgerMaxWriteBytes); + Uint32.encode(stream, encodedConfigSettingContractLedgerCostV0.txMaxReadLedgerEntries); + Uint32.encode(stream, encodedConfigSettingContractLedgerCostV0.txMaxReadBytes); + Uint32.encode(stream, encodedConfigSettingContractLedgerCostV0.txMaxWriteLedgerEntries); + Uint32.encode(stream, encodedConfigSettingContractLedgerCostV0.txMaxWriteBytes); + Int64.encode(stream, encodedConfigSettingContractLedgerCostV0.feeReadLedgerEntry); + Int64.encode(stream, encodedConfigSettingContractLedgerCostV0.feeWriteLedgerEntry); + Int64.encode(stream, encodedConfigSettingContractLedgerCostV0.feeRead1KB); + Int64.encode(stream, encodedConfigSettingContractLedgerCostV0.feeWrite1KB); + Int64.encode(stream, encodedConfigSettingContractLedgerCostV0.bucketListSizeBytes); + Int64.encode(stream, encodedConfigSettingContractLedgerCostV0.bucketListFeeRateLow); + Int64.encode(stream, encodedConfigSettingContractLedgerCostV0.bucketListFeeRateHigh); + Uint32.encode(stream, encodedConfigSettingContractLedgerCostV0.bucketListGrowthFactor); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ConfigSettingContractLedgerCostV0 decode(XdrDataInputStream stream) + throws IOException { + ConfigSettingContractLedgerCostV0 decodedConfigSettingContractLedgerCostV0 = + new ConfigSettingContractLedgerCostV0(); + decodedConfigSettingContractLedgerCostV0.ledgerMaxReadLedgerEntries = Uint32.decode(stream); + decodedConfigSettingContractLedgerCostV0.ledgerMaxReadBytes = Uint32.decode(stream); + decodedConfigSettingContractLedgerCostV0.ledgerMaxWriteLedgerEntries = Uint32.decode(stream); + decodedConfigSettingContractLedgerCostV0.ledgerMaxWriteBytes = Uint32.decode(stream); + decodedConfigSettingContractLedgerCostV0.txMaxReadLedgerEntries = Uint32.decode(stream); + decodedConfigSettingContractLedgerCostV0.txMaxReadBytes = Uint32.decode(stream); + decodedConfigSettingContractLedgerCostV0.txMaxWriteLedgerEntries = Uint32.decode(stream); + decodedConfigSettingContractLedgerCostV0.txMaxWriteBytes = Uint32.decode(stream); + decodedConfigSettingContractLedgerCostV0.feeReadLedgerEntry = Int64.decode(stream); + decodedConfigSettingContractLedgerCostV0.feeWriteLedgerEntry = Int64.decode(stream); + decodedConfigSettingContractLedgerCostV0.feeRead1KB = Int64.decode(stream); + decodedConfigSettingContractLedgerCostV0.feeWrite1KB = Int64.decode(stream); + decodedConfigSettingContractLedgerCostV0.bucketListSizeBytes = Int64.decode(stream); + decodedConfigSettingContractLedgerCostV0.bucketListFeeRateLow = Int64.decode(stream); + decodedConfigSettingContractLedgerCostV0.bucketListFeeRateHigh = Int64.decode(stream); + decodedConfigSettingContractLedgerCostV0.bucketListGrowthFactor = Uint32.decode(stream); + return decodedConfigSettingContractLedgerCostV0; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.ledgerMaxReadLedgerEntries, + this.ledgerMaxReadBytes, + this.ledgerMaxWriteLedgerEntries, + this.ledgerMaxWriteBytes, + this.txMaxReadLedgerEntries, + this.txMaxReadBytes, + this.txMaxWriteLedgerEntries, + this.txMaxWriteBytes, + this.feeReadLedgerEntry, + this.feeWriteLedgerEntry, + this.feeRead1KB, + this.feeWrite1KB, + this.bucketListSizeBytes, + this.bucketListFeeRateLow, + this.bucketListFeeRateHigh, + this.bucketListGrowthFactor); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ConfigSettingContractLedgerCostV0)) { + return false; + } + + ConfigSettingContractLedgerCostV0 other = (ConfigSettingContractLedgerCostV0) object; + return Objects.equal(this.ledgerMaxReadLedgerEntries, other.ledgerMaxReadLedgerEntries) + && Objects.equal(this.ledgerMaxReadBytes, other.ledgerMaxReadBytes) + && Objects.equal(this.ledgerMaxWriteLedgerEntries, other.ledgerMaxWriteLedgerEntries) + && Objects.equal(this.ledgerMaxWriteBytes, other.ledgerMaxWriteBytes) + && Objects.equal(this.txMaxReadLedgerEntries, other.txMaxReadLedgerEntries) + && Objects.equal(this.txMaxReadBytes, other.txMaxReadBytes) + && Objects.equal(this.txMaxWriteLedgerEntries, other.txMaxWriteLedgerEntries) + && Objects.equal(this.txMaxWriteBytes, other.txMaxWriteBytes) + && Objects.equal(this.feeReadLedgerEntry, other.feeReadLedgerEntry) + && Objects.equal(this.feeWriteLedgerEntry, other.feeWriteLedgerEntry) + && Objects.equal(this.feeRead1KB, other.feeRead1KB) + && Objects.equal(this.feeWrite1KB, other.feeWrite1KB) + && Objects.equal(this.bucketListSizeBytes, other.bucketListSizeBytes) + && Objects.equal(this.bucketListFeeRateLow, other.bucketListFeeRateLow) + && Objects.equal(this.bucketListFeeRateHigh, other.bucketListFeeRateHigh) + && Objects.equal(this.bucketListGrowthFactor, other.bucketListGrowthFactor); + } + + public static final class Builder { + private Uint32 ledgerMaxReadLedgerEntries; + private Uint32 ledgerMaxReadBytes; + private Uint32 ledgerMaxWriteLedgerEntries; + private Uint32 ledgerMaxWriteBytes; + private Uint32 txMaxReadLedgerEntries; + private Uint32 txMaxReadBytes; + private Uint32 txMaxWriteLedgerEntries; + private Uint32 txMaxWriteBytes; + private Int64 feeReadLedgerEntry; + private Int64 feeWriteLedgerEntry; + private Int64 feeRead1KB; + private Int64 feeWrite1KB; + private Int64 bucketListSizeBytes; + private Int64 bucketListFeeRateLow; + private Int64 bucketListFeeRateHigh; + private Uint32 bucketListGrowthFactor; + + public Builder ledgerMaxReadLedgerEntries(Uint32 ledgerMaxReadLedgerEntries) { + this.ledgerMaxReadLedgerEntries = ledgerMaxReadLedgerEntries; + return this; + } + + public Builder ledgerMaxReadBytes(Uint32 ledgerMaxReadBytes) { + this.ledgerMaxReadBytes = ledgerMaxReadBytes; + return this; + } + + public Builder ledgerMaxWriteLedgerEntries(Uint32 ledgerMaxWriteLedgerEntries) { + this.ledgerMaxWriteLedgerEntries = ledgerMaxWriteLedgerEntries; + return this; + } + + public Builder ledgerMaxWriteBytes(Uint32 ledgerMaxWriteBytes) { + this.ledgerMaxWriteBytes = ledgerMaxWriteBytes; + return this; + } + + public Builder txMaxReadLedgerEntries(Uint32 txMaxReadLedgerEntries) { + this.txMaxReadLedgerEntries = txMaxReadLedgerEntries; + return this; + } + + public Builder txMaxReadBytes(Uint32 txMaxReadBytes) { + this.txMaxReadBytes = txMaxReadBytes; + return this; + } + + public Builder txMaxWriteLedgerEntries(Uint32 txMaxWriteLedgerEntries) { + this.txMaxWriteLedgerEntries = txMaxWriteLedgerEntries; + return this; + } + + public Builder txMaxWriteBytes(Uint32 txMaxWriteBytes) { + this.txMaxWriteBytes = txMaxWriteBytes; + return this; + } + + public Builder feeReadLedgerEntry(Int64 feeReadLedgerEntry) { + this.feeReadLedgerEntry = feeReadLedgerEntry; + return this; + } + + public Builder feeWriteLedgerEntry(Int64 feeWriteLedgerEntry) { + this.feeWriteLedgerEntry = feeWriteLedgerEntry; + return this; + } + + public Builder feeRead1KB(Int64 feeRead1KB) { + this.feeRead1KB = feeRead1KB; + return this; + } + + public Builder feeWrite1KB(Int64 feeWrite1KB) { + this.feeWrite1KB = feeWrite1KB; + return this; + } + + public Builder bucketListSizeBytes(Int64 bucketListSizeBytes) { + this.bucketListSizeBytes = bucketListSizeBytes; + return this; + } + + public Builder bucketListFeeRateLow(Int64 bucketListFeeRateLow) { + this.bucketListFeeRateLow = bucketListFeeRateLow; + return this; + } + + public Builder bucketListFeeRateHigh(Int64 bucketListFeeRateHigh) { + this.bucketListFeeRateHigh = bucketListFeeRateHigh; + return this; + } + + public Builder bucketListGrowthFactor(Uint32 bucketListGrowthFactor) { + this.bucketListGrowthFactor = bucketListGrowthFactor; + return this; + } + + public ConfigSettingContractLedgerCostV0 build() { + ConfigSettingContractLedgerCostV0 val = new ConfigSettingContractLedgerCostV0(); + val.setLedgerMaxReadLedgerEntries(this.ledgerMaxReadLedgerEntries); + val.setLedgerMaxReadBytes(this.ledgerMaxReadBytes); + val.setLedgerMaxWriteLedgerEntries(this.ledgerMaxWriteLedgerEntries); + val.setLedgerMaxWriteBytes(this.ledgerMaxWriteBytes); + val.setTxMaxReadLedgerEntries(this.txMaxReadLedgerEntries); + val.setTxMaxReadBytes(this.txMaxReadBytes); + val.setTxMaxWriteLedgerEntries(this.txMaxWriteLedgerEntries); + val.setTxMaxWriteBytes(this.txMaxWriteBytes); + val.setFeeReadLedgerEntry(this.feeReadLedgerEntry); + val.setFeeWriteLedgerEntry(this.feeWriteLedgerEntry); + val.setFeeRead1KB(this.feeRead1KB); + val.setFeeWrite1KB(this.feeWrite1KB); + val.setBucketListSizeBytes(this.bucketListSizeBytes); + val.setBucketListFeeRateLow(this.bucketListFeeRateLow); + val.setBucketListFeeRateHigh(this.bucketListFeeRateHigh); + val.setBucketListGrowthFactor(this.bucketListGrowthFactor); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractMetaDataV0.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractMetaDataV0.java new file mode 100644 index 000000000..cef7eb792 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractMetaDataV0.java @@ -0,0 +1,103 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct ConfigSettingContractMetaDataV0 +// { +// // Maximum size of extended meta data produced by a transaction +// uint32 txMaxExtendedMetaDataSizeBytes; +// // Fee for generating 1KB of extended meta data +// int64 feeExtendedMetaData1KB; +// }; + +// =========================================================================== +public class ConfigSettingContractMetaDataV0 implements XdrElement { + public ConfigSettingContractMetaDataV0() {} + + private Uint32 txMaxExtendedMetaDataSizeBytes; + + public Uint32 getTxMaxExtendedMetaDataSizeBytes() { + return this.txMaxExtendedMetaDataSizeBytes; + } + + public void setTxMaxExtendedMetaDataSizeBytes(Uint32 value) { + this.txMaxExtendedMetaDataSizeBytes = value; + } + + private Int64 feeExtendedMetaData1KB; + + public Int64 getFeeExtendedMetaData1KB() { + return this.feeExtendedMetaData1KB; + } + + public void setFeeExtendedMetaData1KB(Int64 value) { + this.feeExtendedMetaData1KB = value; + } + + public static void encode( + XdrDataOutputStream stream, + ConfigSettingContractMetaDataV0 encodedConfigSettingContractMetaDataV0) + throws IOException { + Uint32.encode(stream, encodedConfigSettingContractMetaDataV0.txMaxExtendedMetaDataSizeBytes); + Int64.encode(stream, encodedConfigSettingContractMetaDataV0.feeExtendedMetaData1KB); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ConfigSettingContractMetaDataV0 decode(XdrDataInputStream stream) + throws IOException { + ConfigSettingContractMetaDataV0 decodedConfigSettingContractMetaDataV0 = + new ConfigSettingContractMetaDataV0(); + decodedConfigSettingContractMetaDataV0.txMaxExtendedMetaDataSizeBytes = Uint32.decode(stream); + decodedConfigSettingContractMetaDataV0.feeExtendedMetaData1KB = Int64.decode(stream); + return decodedConfigSettingContractMetaDataV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.txMaxExtendedMetaDataSizeBytes, this.feeExtendedMetaData1KB); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ConfigSettingContractMetaDataV0)) { + return false; + } + + ConfigSettingContractMetaDataV0 other = (ConfigSettingContractMetaDataV0) object; + return Objects.equal(this.txMaxExtendedMetaDataSizeBytes, other.txMaxExtendedMetaDataSizeBytes) + && Objects.equal(this.feeExtendedMetaData1KB, other.feeExtendedMetaData1KB); + } + + public static final class Builder { + private Uint32 txMaxExtendedMetaDataSizeBytes; + private Int64 feeExtendedMetaData1KB; + + public Builder txMaxExtendedMetaDataSizeBytes(Uint32 txMaxExtendedMetaDataSizeBytes) { + this.txMaxExtendedMetaDataSizeBytes = txMaxExtendedMetaDataSizeBytes; + return this; + } + + public Builder feeExtendedMetaData1KB(Int64 feeExtendedMetaData1KB) { + this.feeExtendedMetaData1KB = feeExtendedMetaData1KB; + return this; + } + + public ConfigSettingContractMetaDataV0 build() { + ConfigSettingContractMetaDataV0 val = new ConfigSettingContractMetaDataV0(); + val.setTxMaxExtendedMetaDataSizeBytes(this.txMaxExtendedMetaDataSizeBytes); + val.setFeeExtendedMetaData1KB(this.feeExtendedMetaData1KB); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingEntry.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingEntry.java new file mode 100644 index 000000000..0ca29091d --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingEntry.java @@ -0,0 +1,453 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// union ConfigSettingEntry switch (ConfigSettingID configSettingID) +// { +// case CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES: +// uint32 contractMaxSizeBytes; +// case CONFIG_SETTING_CONTRACT_COMPUTE_V0: +// ConfigSettingContractComputeV0 contractCompute; +// case CONFIG_SETTING_CONTRACT_LEDGER_COST_V0: +// ConfigSettingContractLedgerCostV0 contractLedgerCost; +// case CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0: +// ConfigSettingContractHistoricalDataV0 contractHistoricalData; +// case CONFIG_SETTING_CONTRACT_META_DATA_V0: +// ConfigSettingContractMetaDataV0 contractMetaData; +// case CONFIG_SETTING_CONTRACT_BANDWIDTH_V0: +// ConfigSettingContractBandwidthV0 contractBandwidth; +// case CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS: +// ContractCostParams contractCostParamsCpuInsns; +// case CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES: +// ContractCostParams contractCostParamsMemBytes; +// case CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES: +// uint32 contractDataKeySizeBytes; +// case CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES: +// uint32 contractDataEntrySizeBytes; +// case CONFIG_SETTING_STATE_EXPIRATION: +// StateExpirationSettings stateExpirationSettings; +// case CONFIG_SETTING_CONTRACT_EXECUTION_LANES: +// ConfigSettingContractExecutionLanesV0 contractExecutionLanes; +// case CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW: +// uint64 bucketListSizeWindow<>; +// }; + +// =========================================================================== +public class ConfigSettingEntry implements XdrElement { + public ConfigSettingEntry() {} + + ConfigSettingID configSettingID; + + public ConfigSettingID getDiscriminant() { + return this.configSettingID; + } + + public void setDiscriminant(ConfigSettingID value) { + this.configSettingID = value; + } + + private Uint32 contractMaxSizeBytes; + + public Uint32 getContractMaxSizeBytes() { + return this.contractMaxSizeBytes; + } + + public void setContractMaxSizeBytes(Uint32 value) { + this.contractMaxSizeBytes = value; + } + + private ConfigSettingContractComputeV0 contractCompute; + + public ConfigSettingContractComputeV0 getContractCompute() { + return this.contractCompute; + } + + public void setContractCompute(ConfigSettingContractComputeV0 value) { + this.contractCompute = value; + } + + private ConfigSettingContractLedgerCostV0 contractLedgerCost; + + public ConfigSettingContractLedgerCostV0 getContractLedgerCost() { + return this.contractLedgerCost; + } + + public void setContractLedgerCost(ConfigSettingContractLedgerCostV0 value) { + this.contractLedgerCost = value; + } + + private ConfigSettingContractHistoricalDataV0 contractHistoricalData; + + public ConfigSettingContractHistoricalDataV0 getContractHistoricalData() { + return this.contractHistoricalData; + } + + public void setContractHistoricalData(ConfigSettingContractHistoricalDataV0 value) { + this.contractHistoricalData = value; + } + + private ConfigSettingContractMetaDataV0 contractMetaData; + + public ConfigSettingContractMetaDataV0 getContractMetaData() { + return this.contractMetaData; + } + + public void setContractMetaData(ConfigSettingContractMetaDataV0 value) { + this.contractMetaData = value; + } + + private ConfigSettingContractBandwidthV0 contractBandwidth; + + public ConfigSettingContractBandwidthV0 getContractBandwidth() { + return this.contractBandwidth; + } + + public void setContractBandwidth(ConfigSettingContractBandwidthV0 value) { + this.contractBandwidth = value; + } + + private ContractCostParams contractCostParamsCpuInsns; + + public ContractCostParams getContractCostParamsCpuInsns() { + return this.contractCostParamsCpuInsns; + } + + public void setContractCostParamsCpuInsns(ContractCostParams value) { + this.contractCostParamsCpuInsns = value; + } + + private ContractCostParams contractCostParamsMemBytes; + + public ContractCostParams getContractCostParamsMemBytes() { + return this.contractCostParamsMemBytes; + } + + public void setContractCostParamsMemBytes(ContractCostParams value) { + this.contractCostParamsMemBytes = value; + } + + private Uint32 contractDataKeySizeBytes; + + public Uint32 getContractDataKeySizeBytes() { + return this.contractDataKeySizeBytes; + } + + public void setContractDataKeySizeBytes(Uint32 value) { + this.contractDataKeySizeBytes = value; + } + + private Uint32 contractDataEntrySizeBytes; + + public Uint32 getContractDataEntrySizeBytes() { + return this.contractDataEntrySizeBytes; + } + + public void setContractDataEntrySizeBytes(Uint32 value) { + this.contractDataEntrySizeBytes = value; + } + + private StateExpirationSettings stateExpirationSettings; + + public StateExpirationSettings getStateExpirationSettings() { + return this.stateExpirationSettings; + } + + public void setStateExpirationSettings(StateExpirationSettings value) { + this.stateExpirationSettings = value; + } + + private ConfigSettingContractExecutionLanesV0 contractExecutionLanes; + + public ConfigSettingContractExecutionLanesV0 getContractExecutionLanes() { + return this.contractExecutionLanes; + } + + public void setContractExecutionLanes(ConfigSettingContractExecutionLanesV0 value) { + this.contractExecutionLanes = value; + } + + private Uint64[] bucketListSizeWindow; + + public Uint64[] getBucketListSizeWindow() { + return this.bucketListSizeWindow; + } + + public void setBucketListSizeWindow(Uint64[] value) { + this.bucketListSizeWindow = value; + } + + public static final class Builder { + private ConfigSettingID discriminant; + private Uint32 contractMaxSizeBytes; + private ConfigSettingContractComputeV0 contractCompute; + private ConfigSettingContractLedgerCostV0 contractLedgerCost; + private ConfigSettingContractHistoricalDataV0 contractHistoricalData; + private ConfigSettingContractMetaDataV0 contractMetaData; + private ConfigSettingContractBandwidthV0 contractBandwidth; + private ContractCostParams contractCostParamsCpuInsns; + private ContractCostParams contractCostParamsMemBytes; + private Uint32 contractDataKeySizeBytes; + private Uint32 contractDataEntrySizeBytes; + private StateExpirationSettings stateExpirationSettings; + private ConfigSettingContractExecutionLanesV0 contractExecutionLanes; + private Uint64[] bucketListSizeWindow; + + public Builder discriminant(ConfigSettingID discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder contractMaxSizeBytes(Uint32 contractMaxSizeBytes) { + this.contractMaxSizeBytes = contractMaxSizeBytes; + return this; + } + + public Builder contractCompute(ConfigSettingContractComputeV0 contractCompute) { + this.contractCompute = contractCompute; + return this; + } + + public Builder contractLedgerCost(ConfigSettingContractLedgerCostV0 contractLedgerCost) { + this.contractLedgerCost = contractLedgerCost; + return this; + } + + public Builder contractHistoricalData( + ConfigSettingContractHistoricalDataV0 contractHistoricalData) { + this.contractHistoricalData = contractHistoricalData; + return this; + } + + public Builder contractMetaData(ConfigSettingContractMetaDataV0 contractMetaData) { + this.contractMetaData = contractMetaData; + return this; + } + + public Builder contractBandwidth(ConfigSettingContractBandwidthV0 contractBandwidth) { + this.contractBandwidth = contractBandwidth; + return this; + } + + public Builder contractCostParamsCpuInsns(ContractCostParams contractCostParamsCpuInsns) { + this.contractCostParamsCpuInsns = contractCostParamsCpuInsns; + return this; + } + + public Builder contractCostParamsMemBytes(ContractCostParams contractCostParamsMemBytes) { + this.contractCostParamsMemBytes = contractCostParamsMemBytes; + return this; + } + + public Builder contractDataKeySizeBytes(Uint32 contractDataKeySizeBytes) { + this.contractDataKeySizeBytes = contractDataKeySizeBytes; + return this; + } + + public Builder contractDataEntrySizeBytes(Uint32 contractDataEntrySizeBytes) { + this.contractDataEntrySizeBytes = contractDataEntrySizeBytes; + return this; + } + + public Builder stateExpirationSettings(StateExpirationSettings stateExpirationSettings) { + this.stateExpirationSettings = stateExpirationSettings; + return this; + } + + public Builder contractExecutionLanes( + ConfigSettingContractExecutionLanesV0 contractExecutionLanes) { + this.contractExecutionLanes = contractExecutionLanes; + return this; + } + + public Builder bucketListSizeWindow(Uint64[] bucketListSizeWindow) { + this.bucketListSizeWindow = bucketListSizeWindow; + return this; + } + + public ConfigSettingEntry build() { + ConfigSettingEntry val = new ConfigSettingEntry(); + val.setDiscriminant(discriminant); + val.setContractMaxSizeBytes(this.contractMaxSizeBytes); + val.setContractCompute(this.contractCompute); + val.setContractLedgerCost(this.contractLedgerCost); + val.setContractHistoricalData(this.contractHistoricalData); + val.setContractMetaData(this.contractMetaData); + val.setContractBandwidth(this.contractBandwidth); + val.setContractCostParamsCpuInsns(this.contractCostParamsCpuInsns); + val.setContractCostParamsMemBytes(this.contractCostParamsMemBytes); + val.setContractDataKeySizeBytes(this.contractDataKeySizeBytes); + val.setContractDataEntrySizeBytes(this.contractDataEntrySizeBytes); + val.setStateExpirationSettings(this.stateExpirationSettings); + val.setContractExecutionLanes(this.contractExecutionLanes); + val.setBucketListSizeWindow(this.bucketListSizeWindow); + return val; + } + } + + public static void encode( + XdrDataOutputStream stream, ConfigSettingEntry encodedConfigSettingEntry) throws IOException { + // Xdrgen::AST::Identifier + // ConfigSettingID + stream.writeInt(encodedConfigSettingEntry.getDiscriminant().getValue()); + switch (encodedConfigSettingEntry.getDiscriminant()) { + case CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES: + Uint32.encode(stream, encodedConfigSettingEntry.contractMaxSizeBytes); + break; + case CONFIG_SETTING_CONTRACT_COMPUTE_V0: + ConfigSettingContractComputeV0.encode(stream, encodedConfigSettingEntry.contractCompute); + break; + case CONFIG_SETTING_CONTRACT_LEDGER_COST_V0: + ConfigSettingContractLedgerCostV0.encode( + stream, encodedConfigSettingEntry.contractLedgerCost); + break; + case CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0: + ConfigSettingContractHistoricalDataV0.encode( + stream, encodedConfigSettingEntry.contractHistoricalData); + break; + case CONFIG_SETTING_CONTRACT_META_DATA_V0: + ConfigSettingContractMetaDataV0.encode(stream, encodedConfigSettingEntry.contractMetaData); + break; + case CONFIG_SETTING_CONTRACT_BANDWIDTH_V0: + ConfigSettingContractBandwidthV0.encode( + stream, encodedConfigSettingEntry.contractBandwidth); + break; + case CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS: + ContractCostParams.encode(stream, encodedConfigSettingEntry.contractCostParamsCpuInsns); + break; + case CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES: + ContractCostParams.encode(stream, encodedConfigSettingEntry.contractCostParamsMemBytes); + break; + case CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES: + Uint32.encode(stream, encodedConfigSettingEntry.contractDataKeySizeBytes); + break; + case CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES: + Uint32.encode(stream, encodedConfigSettingEntry.contractDataEntrySizeBytes); + break; + case CONFIG_SETTING_STATE_EXPIRATION: + StateExpirationSettings.encode(stream, encodedConfigSettingEntry.stateExpirationSettings); + break; + case CONFIG_SETTING_CONTRACT_EXECUTION_LANES: + ConfigSettingContractExecutionLanesV0.encode( + stream, encodedConfigSettingEntry.contractExecutionLanes); + break; + case CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW: + int bucketListSizeWindowsize = encodedConfigSettingEntry.getBucketListSizeWindow().length; + stream.writeInt(bucketListSizeWindowsize); + for (int i = 0; i < bucketListSizeWindowsize; i++) { + Uint64.encode(stream, encodedConfigSettingEntry.bucketListSizeWindow[i]); + } + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ConfigSettingEntry decode(XdrDataInputStream stream) throws IOException { + ConfigSettingEntry decodedConfigSettingEntry = new ConfigSettingEntry(); + ConfigSettingID discriminant = ConfigSettingID.decode(stream); + decodedConfigSettingEntry.setDiscriminant(discriminant); + switch (decodedConfigSettingEntry.getDiscriminant()) { + case CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES: + decodedConfigSettingEntry.contractMaxSizeBytes = Uint32.decode(stream); + break; + case CONFIG_SETTING_CONTRACT_COMPUTE_V0: + decodedConfigSettingEntry.contractCompute = ConfigSettingContractComputeV0.decode(stream); + break; + case CONFIG_SETTING_CONTRACT_LEDGER_COST_V0: + decodedConfigSettingEntry.contractLedgerCost = + ConfigSettingContractLedgerCostV0.decode(stream); + break; + case CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0: + decodedConfigSettingEntry.contractHistoricalData = + ConfigSettingContractHistoricalDataV0.decode(stream); + break; + case CONFIG_SETTING_CONTRACT_META_DATA_V0: + decodedConfigSettingEntry.contractMetaData = ConfigSettingContractMetaDataV0.decode(stream); + break; + case CONFIG_SETTING_CONTRACT_BANDWIDTH_V0: + decodedConfigSettingEntry.contractBandwidth = + ConfigSettingContractBandwidthV0.decode(stream); + break; + case CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS: + decodedConfigSettingEntry.contractCostParamsCpuInsns = ContractCostParams.decode(stream); + break; + case CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES: + decodedConfigSettingEntry.contractCostParamsMemBytes = ContractCostParams.decode(stream); + break; + case CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES: + decodedConfigSettingEntry.contractDataKeySizeBytes = Uint32.decode(stream); + break; + case CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES: + decodedConfigSettingEntry.contractDataEntrySizeBytes = Uint32.decode(stream); + break; + case CONFIG_SETTING_STATE_EXPIRATION: + decodedConfigSettingEntry.stateExpirationSettings = StateExpirationSettings.decode(stream); + break; + case CONFIG_SETTING_CONTRACT_EXECUTION_LANES: + decodedConfigSettingEntry.contractExecutionLanes = + ConfigSettingContractExecutionLanesV0.decode(stream); + break; + case CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW: + int bucketListSizeWindowsize = stream.readInt(); + decodedConfigSettingEntry.bucketListSizeWindow = new Uint64[bucketListSizeWindowsize]; + for (int i = 0; i < bucketListSizeWindowsize; i++) { + decodedConfigSettingEntry.bucketListSizeWindow[i] = Uint64.decode(stream); + } + break; + } + return decodedConfigSettingEntry; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.contractMaxSizeBytes, + this.contractCompute, + this.contractLedgerCost, + this.contractHistoricalData, + this.contractMetaData, + this.contractBandwidth, + this.contractCostParamsCpuInsns, + this.contractCostParamsMemBytes, + this.contractDataKeySizeBytes, + this.contractDataEntrySizeBytes, + this.stateExpirationSettings, + this.contractExecutionLanes, + Arrays.hashCode(this.bucketListSizeWindow), + this.configSettingID); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ConfigSettingEntry)) { + return false; + } + + ConfigSettingEntry other = (ConfigSettingEntry) object; + return Objects.equal(this.contractMaxSizeBytes, other.contractMaxSizeBytes) + && Objects.equal(this.contractCompute, other.contractCompute) + && Objects.equal(this.contractLedgerCost, other.contractLedgerCost) + && Objects.equal(this.contractHistoricalData, other.contractHistoricalData) + && Objects.equal(this.contractMetaData, other.contractMetaData) + && Objects.equal(this.contractBandwidth, other.contractBandwidth) + && Objects.equal(this.contractCostParamsCpuInsns, other.contractCostParamsCpuInsns) + && Objects.equal(this.contractCostParamsMemBytes, other.contractCostParamsMemBytes) + && Objects.equal(this.contractDataKeySizeBytes, other.contractDataKeySizeBytes) + && Objects.equal(this.contractDataEntrySizeBytes, other.contractDataEntrySizeBytes) + && Objects.equal(this.stateExpirationSettings, other.stateExpirationSettings) + && Objects.equal(this.contractExecutionLanes, other.contractExecutionLanes) + && Arrays.equals(this.bucketListSizeWindow, other.bucketListSizeWindow) + && Objects.equal(this.configSettingID, other.configSettingID); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingID.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingID.java new file mode 100644 index 000000000..1f45b8766 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingID.java @@ -0,0 +1,96 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum ConfigSettingID +// { +// CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES = 0, +// CONFIG_SETTING_CONTRACT_COMPUTE_V0 = 1, +// CONFIG_SETTING_CONTRACT_LEDGER_COST_V0 = 2, +// CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0 = 3, +// CONFIG_SETTING_CONTRACT_META_DATA_V0 = 4, +// CONFIG_SETTING_CONTRACT_BANDWIDTH_V0 = 5, +// CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS = 6, +// CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES = 7, +// CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES = 8, +// CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES = 9, +// CONFIG_SETTING_STATE_EXPIRATION = 10, +// CONFIG_SETTING_CONTRACT_EXECUTION_LANES = 11, +// CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW = 12 +// }; + +// =========================================================================== +public enum ConfigSettingID implements XdrElement { + CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES(0), + CONFIG_SETTING_CONTRACT_COMPUTE_V0(1), + CONFIG_SETTING_CONTRACT_LEDGER_COST_V0(2), + CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0(3), + CONFIG_SETTING_CONTRACT_META_DATA_V0(4), + CONFIG_SETTING_CONTRACT_BANDWIDTH_V0(5), + CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS(6), + CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES(7), + CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES(8), + CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES(9), + CONFIG_SETTING_STATE_EXPIRATION(10), + CONFIG_SETTING_CONTRACT_EXECUTION_LANES(11), + CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW(12), + ; + private int mValue; + + ConfigSettingID(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static ConfigSettingID decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES; + case 1: + return CONFIG_SETTING_CONTRACT_COMPUTE_V0; + case 2: + return CONFIG_SETTING_CONTRACT_LEDGER_COST_V0; + case 3: + return CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0; + case 4: + return CONFIG_SETTING_CONTRACT_META_DATA_V0; + case 5: + return CONFIG_SETTING_CONTRACT_BANDWIDTH_V0; + case 6: + return CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS; + case 7: + return CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES; + case 8: + return CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES; + case 9: + return CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES; + case 10: + return CONFIG_SETTING_STATE_EXPIRATION; + case 11: + return CONFIG_SETTING_CONTRACT_EXECUTION_LANES; + case 12: + return CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, ConfigSettingID value) throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSet.java b/src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSet.java new file mode 100644 index 000000000..ff18850cf --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSet.java @@ -0,0 +1,83 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct ConfigUpgradeSet { +// ConfigSettingEntry updatedEntry<>; +// }; + +// =========================================================================== +public class ConfigUpgradeSet implements XdrElement { + public ConfigUpgradeSet() {} + + private ConfigSettingEntry[] updatedEntry; + + public ConfigSettingEntry[] getUpdatedEntry() { + return this.updatedEntry; + } + + public void setUpdatedEntry(ConfigSettingEntry[] value) { + this.updatedEntry = value; + } + + public static void encode(XdrDataOutputStream stream, ConfigUpgradeSet encodedConfigUpgradeSet) + throws IOException { + int updatedEntrysize = encodedConfigUpgradeSet.getUpdatedEntry().length; + stream.writeInt(updatedEntrysize); + for (int i = 0; i < updatedEntrysize; i++) { + ConfigSettingEntry.encode(stream, encodedConfigUpgradeSet.updatedEntry[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ConfigUpgradeSet decode(XdrDataInputStream stream) throws IOException { + ConfigUpgradeSet decodedConfigUpgradeSet = new ConfigUpgradeSet(); + int updatedEntrysize = stream.readInt(); + decodedConfigUpgradeSet.updatedEntry = new ConfigSettingEntry[updatedEntrysize]; + for (int i = 0; i < updatedEntrysize; i++) { + decodedConfigUpgradeSet.updatedEntry[i] = ConfigSettingEntry.decode(stream); + } + return decodedConfigUpgradeSet; + } + + @Override + public int hashCode() { + return Arrays.hashCode(this.updatedEntry); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ConfigUpgradeSet)) { + return false; + } + + ConfigUpgradeSet other = (ConfigUpgradeSet) object; + return Arrays.equals(this.updatedEntry, other.updatedEntry); + } + + public static final class Builder { + private ConfigSettingEntry[] updatedEntry; + + public Builder updatedEntry(ConfigSettingEntry[] updatedEntry) { + this.updatedEntry = updatedEntry; + return this; + } + + public ConfigUpgradeSet build() { + ConfigUpgradeSet val = new ConfigUpgradeSet(); + val.setUpdatedEntry(this.updatedEntry); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSetKey.java b/src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSetKey.java new file mode 100644 index 000000000..bb24fa626 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSetKey.java @@ -0,0 +1,97 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct ConfigUpgradeSetKey { +// Hash contractID; +// Hash contentHash; +// }; + +// =========================================================================== +public class ConfigUpgradeSetKey implements XdrElement { + public ConfigUpgradeSetKey() {} + + private Hash contractID; + + public Hash getContractID() { + return this.contractID; + } + + public void setContractID(Hash value) { + this.contractID = value; + } + + private Hash contentHash; + + public Hash getContentHash() { + return this.contentHash; + } + + public void setContentHash(Hash value) { + this.contentHash = value; + } + + public static void encode( + XdrDataOutputStream stream, ConfigUpgradeSetKey encodedConfigUpgradeSetKey) + throws IOException { + Hash.encode(stream, encodedConfigUpgradeSetKey.contractID); + Hash.encode(stream, encodedConfigUpgradeSetKey.contentHash); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ConfigUpgradeSetKey decode(XdrDataInputStream stream) throws IOException { + ConfigUpgradeSetKey decodedConfigUpgradeSetKey = new ConfigUpgradeSetKey(); + decodedConfigUpgradeSetKey.contractID = Hash.decode(stream); + decodedConfigUpgradeSetKey.contentHash = Hash.decode(stream); + return decodedConfigUpgradeSetKey; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.contractID, this.contentHash); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ConfigUpgradeSetKey)) { + return false; + } + + ConfigUpgradeSetKey other = (ConfigUpgradeSetKey) object; + return Objects.equal(this.contractID, other.contractID) + && Objects.equal(this.contentHash, other.contentHash); + } + + public static final class Builder { + private Hash contractID; + private Hash contentHash; + + public Builder contractID(Hash contractID) { + this.contractID = contractID; + return this; + } + + public Builder contentHash(Hash contentHash) { + this.contentHash = contentHash; + return this; + } + + public ConfigUpgradeSetKey build() { + ConfigUpgradeSetKey val = new ConfigUpgradeSetKey(); + val.setContractID(this.contractID); + val.setContentHash(this.contentHash); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/Constants.java b/src/main/java/org/stellar/sdk/xdr/Constants.java new file mode 100644 index 000000000..2438dd144 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/Constants.java @@ -0,0 +1,27 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +public final class Constants { + private Constants() {} + + public static final int CONTRACT_COST_COUNT_LIMIT = 1024; + public static final int SC_SPEC_DOC_LIMIT = 1024; + public static final int SCSYMBOL_LIMIT = 32; + public static final int MASK_ACCOUNT_FLAGS = 0x7; + public static final int MASK_ACCOUNT_FLAGS_V17 = 0xF; + public static final int MAX_SIGNERS = 20; + public static final int MASK_TRUSTLINE_FLAGS = 1; + public static final int MASK_TRUSTLINE_FLAGS_V13 = 3; + public static final int MASK_TRUSTLINE_FLAGS_V17 = 7; + public static final int MASK_OFFERENTRY_FLAGS = 1; + public static final int MASK_CLAIMABLE_BALANCE_FLAGS = 0x1; + public static final int MASK_CONTRACT_DATA_FLAGS_V20 = 0x1; + public static final int MASK_LEDGER_HEADER_FLAGS = 0x7F; + public static final int AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED = 200; + public static final int TX_ADVERT_VECTOR_MAX_SIZE = 1000; + public static final int TX_DEMAND_VECTOR_MAX_SIZE = 1000; + public static final int MAX_OPS_PER_TX = 100; + public static final int LIQUIDITY_POOL_FEE_V18 = 30; +} diff --git a/src/main/java/org/stellar/sdk/xdr/ContractCodeEntry.java b/src/main/java/org/stellar/sdk/xdr/ContractCodeEntry.java new file mode 100644 index 000000000..74fdc6cd2 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ContractCodeEntry.java @@ -0,0 +1,245 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct ContractCodeEntry { +// ExtensionPoint ext; +// +// Hash hash; +// union switch (ContractEntryBodyType bodyType) +// { +// case DATA_ENTRY: +// opaque code<>; +// case EXPIRATION_EXTENSION: +// void; +// } body; +// +// uint32 expirationLedgerSeq; +// }; + +// =========================================================================== +public class ContractCodeEntry implements XdrElement { + public ContractCodeEntry() {} + + private ExtensionPoint ext; + + public ExtensionPoint getExt() { + return this.ext; + } + + public void setExt(ExtensionPoint value) { + this.ext = value; + } + + private Hash hash; + + public Hash getHash() { + return this.hash; + } + + public void setHash(Hash value) { + this.hash = value; + } + + private ContractCodeEntryBody body; + + public ContractCodeEntryBody getBody() { + return this.body; + } + + public void setBody(ContractCodeEntryBody value) { + this.body = value; + } + + private Uint32 expirationLedgerSeq; + + public Uint32 getExpirationLedgerSeq() { + return this.expirationLedgerSeq; + } + + public void setExpirationLedgerSeq(Uint32 value) { + this.expirationLedgerSeq = value; + } + + public static void encode(XdrDataOutputStream stream, ContractCodeEntry encodedContractCodeEntry) + throws IOException { + ExtensionPoint.encode(stream, encodedContractCodeEntry.ext); + Hash.encode(stream, encodedContractCodeEntry.hash); + ContractCodeEntryBody.encode(stream, encodedContractCodeEntry.body); + Uint32.encode(stream, encodedContractCodeEntry.expirationLedgerSeq); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ContractCodeEntry decode(XdrDataInputStream stream) throws IOException { + ContractCodeEntry decodedContractCodeEntry = new ContractCodeEntry(); + decodedContractCodeEntry.ext = ExtensionPoint.decode(stream); + decodedContractCodeEntry.hash = Hash.decode(stream); + decodedContractCodeEntry.body = ContractCodeEntryBody.decode(stream); + decodedContractCodeEntry.expirationLedgerSeq = Uint32.decode(stream); + return decodedContractCodeEntry; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.ext, this.hash, this.body, this.expirationLedgerSeq); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ContractCodeEntry)) { + return false; + } + + ContractCodeEntry other = (ContractCodeEntry) object; + return Objects.equal(this.ext, other.ext) + && Objects.equal(this.hash, other.hash) + && Objects.equal(this.body, other.body) + && Objects.equal(this.expirationLedgerSeq, other.expirationLedgerSeq); + } + + public static final class Builder { + private ExtensionPoint ext; + private Hash hash; + private ContractCodeEntryBody body; + private Uint32 expirationLedgerSeq; + + public Builder ext(ExtensionPoint ext) { + this.ext = ext; + return this; + } + + public Builder hash(Hash hash) { + this.hash = hash; + return this; + } + + public Builder body(ContractCodeEntryBody body) { + this.body = body; + return this; + } + + public Builder expirationLedgerSeq(Uint32 expirationLedgerSeq) { + this.expirationLedgerSeq = expirationLedgerSeq; + return this; + } + + public ContractCodeEntry build() { + ContractCodeEntry val = new ContractCodeEntry(); + val.setExt(this.ext); + val.setHash(this.hash); + val.setBody(this.body); + val.setExpirationLedgerSeq(this.expirationLedgerSeq); + return val; + } + } + + public static class ContractCodeEntryBody { + public ContractCodeEntryBody() {} + + ContractEntryBodyType bodyType; + + public ContractEntryBodyType getDiscriminant() { + return this.bodyType; + } + + public void setDiscriminant(ContractEntryBodyType value) { + this.bodyType = value; + } + + private byte[] code; + + public byte[] getCode() { + return this.code; + } + + public void setCode(byte[] value) { + this.code = value; + } + + public static final class Builder { + private ContractEntryBodyType discriminant; + private byte[] code; + + public Builder discriminant(ContractEntryBodyType discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder code(byte[] code) { + this.code = code; + return this; + } + + public ContractCodeEntryBody build() { + ContractCodeEntryBody val = new ContractCodeEntryBody(); + val.setDiscriminant(discriminant); + val.setCode(this.code); + return val; + } + } + + public static void encode( + XdrDataOutputStream stream, ContractCodeEntryBody encodedContractCodeEntryBody) + throws IOException { + // Xdrgen::AST::Identifier + // ContractEntryBodyType + stream.writeInt(encodedContractCodeEntryBody.getDiscriminant().getValue()); + switch (encodedContractCodeEntryBody.getDiscriminant()) { + case DATA_ENTRY: + int codesize = encodedContractCodeEntryBody.code.length; + stream.writeInt(codesize); + stream.write(encodedContractCodeEntryBody.getCode(), 0, codesize); + break; + case EXPIRATION_EXTENSION: + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ContractCodeEntryBody decode(XdrDataInputStream stream) throws IOException { + ContractCodeEntryBody decodedContractCodeEntryBody = new ContractCodeEntryBody(); + ContractEntryBodyType discriminant = ContractEntryBodyType.decode(stream); + decodedContractCodeEntryBody.setDiscriminant(discriminant); + switch (decodedContractCodeEntryBody.getDiscriminant()) { + case DATA_ENTRY: + int codesize = stream.readInt(); + decodedContractCodeEntryBody.code = new byte[codesize]; + stream.read(decodedContractCodeEntryBody.code, 0, codesize); + break; + case EXPIRATION_EXTENSION: + break; + } + return decodedContractCodeEntryBody; + } + + @Override + public int hashCode() { + return Objects.hashCode(Arrays.hashCode(this.code), this.bodyType); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ContractCodeEntryBody)) { + return false; + } + + ContractCodeEntryBody other = (ContractCodeEntryBody) object; + return Arrays.equals(this.code, other.code) && Objects.equal(this.bodyType, other.bodyType); + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ContractCostParamEntry.java b/src/main/java/org/stellar/sdk/xdr/ContractCostParamEntry.java new file mode 100644 index 000000000..4be8af934 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ContractCostParamEntry.java @@ -0,0 +1,120 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct ContractCostParamEntry { +// // use `ext` to add more terms (e.g. higher order polynomials) in the future +// ExtensionPoint ext; +// +// int64 constTerm; +// int64 linearTerm; +// }; + +// =========================================================================== +public class ContractCostParamEntry implements XdrElement { + public ContractCostParamEntry() {} + + private ExtensionPoint ext; + + public ExtensionPoint getExt() { + return this.ext; + } + + public void setExt(ExtensionPoint value) { + this.ext = value; + } + + private Int64 constTerm; + + public Int64 getConstTerm() { + return this.constTerm; + } + + public void setConstTerm(Int64 value) { + this.constTerm = value; + } + + private Int64 linearTerm; + + public Int64 getLinearTerm() { + return this.linearTerm; + } + + public void setLinearTerm(Int64 value) { + this.linearTerm = value; + } + + public static void encode( + XdrDataOutputStream stream, ContractCostParamEntry encodedContractCostParamEntry) + throws IOException { + ExtensionPoint.encode(stream, encodedContractCostParamEntry.ext); + Int64.encode(stream, encodedContractCostParamEntry.constTerm); + Int64.encode(stream, encodedContractCostParamEntry.linearTerm); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ContractCostParamEntry decode(XdrDataInputStream stream) throws IOException { + ContractCostParamEntry decodedContractCostParamEntry = new ContractCostParamEntry(); + decodedContractCostParamEntry.ext = ExtensionPoint.decode(stream); + decodedContractCostParamEntry.constTerm = Int64.decode(stream); + decodedContractCostParamEntry.linearTerm = Int64.decode(stream); + return decodedContractCostParamEntry; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.ext, this.constTerm, this.linearTerm); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ContractCostParamEntry)) { + return false; + } + + ContractCostParamEntry other = (ContractCostParamEntry) object; + return Objects.equal(this.ext, other.ext) + && Objects.equal(this.constTerm, other.constTerm) + && Objects.equal(this.linearTerm, other.linearTerm); + } + + public static final class Builder { + private ExtensionPoint ext; + private Int64 constTerm; + private Int64 linearTerm; + + public Builder ext(ExtensionPoint ext) { + this.ext = ext; + return this; + } + + public Builder constTerm(Int64 constTerm) { + this.constTerm = constTerm; + return this; + } + + public Builder linearTerm(Int64 linearTerm) { + this.linearTerm = linearTerm; + return this; + } + + public ContractCostParamEntry build() { + ContractCostParamEntry val = new ContractCostParamEntry(); + val.setExt(this.ext); + val.setConstTerm(this.constTerm); + val.setLinearTerm(this.linearTerm); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ContractCostParams.java b/src/main/java/org/stellar/sdk/xdr/ContractCostParams.java new file mode 100644 index 000000000..033bad8d9 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ContractCostParams.java @@ -0,0 +1,71 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// typedef ContractCostParamEntry ContractCostParams; + +// =========================================================================== +public class ContractCostParams implements XdrElement { + private ContractCostParamEntry[] ContractCostParams; + + public ContractCostParams() {} + + public ContractCostParams(ContractCostParamEntry[] ContractCostParams) { + this.ContractCostParams = ContractCostParams; + } + + public ContractCostParamEntry[] getContractCostParams() { + return this.ContractCostParams; + } + + public void setContractCostParams(ContractCostParamEntry[] value) { + this.ContractCostParams = value; + } + + public static void encode( + XdrDataOutputStream stream, ContractCostParams encodedContractCostParams) throws IOException { + int ContractCostParamssize = encodedContractCostParams.getContractCostParams().length; + stream.writeInt(ContractCostParamssize); + for (int i = 0; i < ContractCostParamssize; i++) { + ContractCostParamEntry.encode(stream, encodedContractCostParams.ContractCostParams[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ContractCostParams decode(XdrDataInputStream stream) throws IOException { + ContractCostParams decodedContractCostParams = new ContractCostParams(); + int ContractCostParamssize = stream.readInt(); + decodedContractCostParams.ContractCostParams = + new ContractCostParamEntry[ContractCostParamssize]; + for (int i = 0; i < ContractCostParamssize; i++) { + decodedContractCostParams.ContractCostParams[i] = ContractCostParamEntry.decode(stream); + } + return decodedContractCostParams; + } + + @Override + public int hashCode() { + return Arrays.hashCode(this.ContractCostParams); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ContractCostParams)) { + return false; + } + + ContractCostParams other = (ContractCostParams) object; + return Arrays.equals(this.ContractCostParams, other.ContractCostParams); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ContractCostType.java b/src/main/java/org/stellar/sdk/xdr/ContractCostType.java new file mode 100644 index 000000000..3752a793d --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ContractCostType.java @@ -0,0 +1,203 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum ContractCostType { +// // Cost of running 1 wasm instruction +// WasmInsnExec = 0, +// // Cost of growing wasm linear memory by 1 page +// WasmMemAlloc = 1, +// // Cost of allocating a chuck of host memory (in bytes) +// HostMemAlloc = 2, +// // Cost of copying a chuck of bytes into a pre-allocated host memory +// HostMemCpy = 3, +// // Cost of comparing two slices of host memory +// HostMemCmp = 4, +// // Cost of a host function invocation, not including the actual work done by the function +// InvokeHostFunction = 5, +// // Cost of visiting a host object from the host object storage +// // Only thing to make sure is the guest can't visitObject repeatly without incurring some +// charges elsewhere. +// VisitObject = 6, +// // Tracks a single Val (RawVal or primative Object like U64) <=> ScVal +// // conversion cost. Most of these Val counterparts in ScVal (except e.g. +// // Symbol) consumes a single int64 and therefore is a constant overhead. +// ValXdrConv = 7, +// // Cost of serializing an xdr object to bytes +// ValSer = 8, +// // Cost of deserializing an xdr object from bytes +// ValDeser = 9, +// // Cost of computing the sha256 hash from bytes +// ComputeSha256Hash = 10, +// // Cost of computing the ed25519 pubkey from bytes +// ComputeEd25519PubKey = 11, +// // Cost of accessing an entry in a Map. +// MapEntry = 12, +// // Cost of accessing an entry in a Vec +// VecEntry = 13, +// // Cost of guarding a frame, which involves pushing and poping a frame and capturing a +// rollback point. +// GuardFrame = 14, +// // Cost of verifying ed25519 signature of a payload. +// VerifyEd25519Sig = 15, +// // Cost of reading a slice of vm linear memory +// VmMemRead = 16, +// // Cost of writing to a slice of vm linear memory +// VmMemWrite = 17, +// // Cost of instantiation a VM from wasm bytes code. +// VmInstantiation = 18, +// // Cost of instantiation a VM from a cached state. +// VmCachedInstantiation = 19, +// // Roundtrip cost of invoking a VM function from the host. +// InvokeVmFunction = 20, +// // Cost of charging a value to the budgeting system. +// ChargeBudget = 21, +// // Cost of computing a keccak256 hash from bytes. +// ComputeKeccak256Hash = 22, +// // Cost of computing an ECDSA secp256k1 pubkey from bytes. +// ComputeEcdsaSecp256k1Key = 23, +// // Cost of computing an ECDSA secp256k1 signature from bytes. +// ComputeEcdsaSecp256k1Sig = 24, +// // Cost of recovering an ECDSA secp256k1 key from a signature. +// RecoverEcdsaSecp256k1Key = 25, +// // Cost of int256 addition (`+`) and subtraction (`-`) operations +// Int256AddSub = 26, +// // Cost of int256 multiplication (`*`) operation +// Int256Mul = 27, +// // Cost of int256 division (`/`) operation +// Int256Div = 28, +// // Cost of int256 power (`exp`) operation +// Int256Pow = 29, +// // Cost of int256 shift (`shl`, `shr`) operation +// Int256Shift = 30 +// }; + +// =========================================================================== +public enum ContractCostType implements XdrElement { + WasmInsnExec(0), + WasmMemAlloc(1), + HostMemAlloc(2), + HostMemCpy(3), + HostMemCmp(4), + InvokeHostFunction(5), + VisitObject(6), + ValXdrConv(7), + ValSer(8), + ValDeser(9), + ComputeSha256Hash(10), + ComputeEd25519PubKey(11), + MapEntry(12), + VecEntry(13), + GuardFrame(14), + VerifyEd25519Sig(15), + VmMemRead(16), + VmMemWrite(17), + VmInstantiation(18), + VmCachedInstantiation(19), + InvokeVmFunction(20), + ChargeBudget(21), + ComputeKeccak256Hash(22), + ComputeEcdsaSecp256k1Key(23), + ComputeEcdsaSecp256k1Sig(24), + RecoverEcdsaSecp256k1Key(25), + Int256AddSub(26), + Int256Mul(27), + Int256Div(28), + Int256Pow(29), + Int256Shift(30), + ; + private int mValue; + + ContractCostType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static ContractCostType decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return WasmInsnExec; + case 1: + return WasmMemAlloc; + case 2: + return HostMemAlloc; + case 3: + return HostMemCpy; + case 4: + return HostMemCmp; + case 5: + return InvokeHostFunction; + case 6: + return VisitObject; + case 7: + return ValXdrConv; + case 8: + return ValSer; + case 9: + return ValDeser; + case 10: + return ComputeSha256Hash; + case 11: + return ComputeEd25519PubKey; + case 12: + return MapEntry; + case 13: + return VecEntry; + case 14: + return GuardFrame; + case 15: + return VerifyEd25519Sig; + case 16: + return VmMemRead; + case 17: + return VmMemWrite; + case 18: + return VmInstantiation; + case 19: + return VmCachedInstantiation; + case 20: + return InvokeVmFunction; + case 21: + return ChargeBudget; + case 22: + return ComputeKeccak256Hash; + case 23: + return ComputeEcdsaSecp256k1Key; + case 24: + return ComputeEcdsaSecp256k1Sig; + case 25: + return RecoverEcdsaSecp256k1Key; + case 26: + return Int256AddSub; + case 27: + return Int256Mul; + case 28: + return Int256Div; + case 29: + return Int256Pow; + case 30: + return Int256Shift; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, ContractCostType value) throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ContractDataDurability.java b/src/main/java/org/stellar/sdk/xdr/ContractDataDurability.java new file mode 100644 index 000000000..992ecab54 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ContractDataDurability.java @@ -0,0 +1,52 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum ContractDataDurability { +// TEMPORARY = 0, +// PERSISTENT = 1 +// }; + +// =========================================================================== +public enum ContractDataDurability implements XdrElement { + TEMPORARY(0), + PERSISTENT(1), + ; + private int mValue; + + ContractDataDurability(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static ContractDataDurability decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return TEMPORARY; + case 1: + return PERSISTENT; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, ContractDataDurability value) + throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ContractDataEntry.java b/src/main/java/org/stellar/sdk/xdr/ContractDataEntry.java new file mode 100644 index 000000000..18c5ac90b --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ContractDataEntry.java @@ -0,0 +1,345 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct ContractDataEntry { +// SCAddress contract; +// SCVal key; +// ContractDataDurability durability; +// +// union switch (ContractEntryBodyType bodyType) +// { +// case DATA_ENTRY: +// struct +// { +// uint32 flags; +// SCVal val; +// } data; +// case EXPIRATION_EXTENSION: +// void; +// } body; +// +// uint32 expirationLedgerSeq; +// }; + +// =========================================================================== +public class ContractDataEntry implements XdrElement { + public ContractDataEntry() {} + + private SCAddress contract; + + public SCAddress getContract() { + return this.contract; + } + + public void setContract(SCAddress value) { + this.contract = value; + } + + private SCVal key; + + public SCVal getKey() { + return this.key; + } + + public void setKey(SCVal value) { + this.key = value; + } + + private ContractDataDurability durability; + + public ContractDataDurability getDurability() { + return this.durability; + } + + public void setDurability(ContractDataDurability value) { + this.durability = value; + } + + private ContractDataEntryBody body; + + public ContractDataEntryBody getBody() { + return this.body; + } + + public void setBody(ContractDataEntryBody value) { + this.body = value; + } + + private Uint32 expirationLedgerSeq; + + public Uint32 getExpirationLedgerSeq() { + return this.expirationLedgerSeq; + } + + public void setExpirationLedgerSeq(Uint32 value) { + this.expirationLedgerSeq = value; + } + + public static void encode(XdrDataOutputStream stream, ContractDataEntry encodedContractDataEntry) + throws IOException { + SCAddress.encode(stream, encodedContractDataEntry.contract); + SCVal.encode(stream, encodedContractDataEntry.key); + ContractDataDurability.encode(stream, encodedContractDataEntry.durability); + ContractDataEntryBody.encode(stream, encodedContractDataEntry.body); + Uint32.encode(stream, encodedContractDataEntry.expirationLedgerSeq); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ContractDataEntry decode(XdrDataInputStream stream) throws IOException { + ContractDataEntry decodedContractDataEntry = new ContractDataEntry(); + decodedContractDataEntry.contract = SCAddress.decode(stream); + decodedContractDataEntry.key = SCVal.decode(stream); + decodedContractDataEntry.durability = ContractDataDurability.decode(stream); + decodedContractDataEntry.body = ContractDataEntryBody.decode(stream); + decodedContractDataEntry.expirationLedgerSeq = Uint32.decode(stream); + return decodedContractDataEntry; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.contract, this.key, this.durability, this.body, this.expirationLedgerSeq); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ContractDataEntry)) { + return false; + } + + ContractDataEntry other = (ContractDataEntry) object; + return Objects.equal(this.contract, other.contract) + && Objects.equal(this.key, other.key) + && Objects.equal(this.durability, other.durability) + && Objects.equal(this.body, other.body) + && Objects.equal(this.expirationLedgerSeq, other.expirationLedgerSeq); + } + + public static final class Builder { + private SCAddress contract; + private SCVal key; + private ContractDataDurability durability; + private ContractDataEntryBody body; + private Uint32 expirationLedgerSeq; + + public Builder contract(SCAddress contract) { + this.contract = contract; + return this; + } + + public Builder key(SCVal key) { + this.key = key; + return this; + } + + public Builder durability(ContractDataDurability durability) { + this.durability = durability; + return this; + } + + public Builder body(ContractDataEntryBody body) { + this.body = body; + return this; + } + + public Builder expirationLedgerSeq(Uint32 expirationLedgerSeq) { + this.expirationLedgerSeq = expirationLedgerSeq; + return this; + } + + public ContractDataEntry build() { + ContractDataEntry val = new ContractDataEntry(); + val.setContract(this.contract); + val.setKey(this.key); + val.setDurability(this.durability); + val.setBody(this.body); + val.setExpirationLedgerSeq(this.expirationLedgerSeq); + return val; + } + } + + public static class ContractDataEntryBody { + public ContractDataEntryBody() {} + + ContractEntryBodyType bodyType; + + public ContractEntryBodyType getDiscriminant() { + return this.bodyType; + } + + public void setDiscriminant(ContractEntryBodyType value) { + this.bodyType = value; + } + + private ContractDataEntryData data; + + public ContractDataEntryData getData() { + return this.data; + } + + public void setData(ContractDataEntryData value) { + this.data = value; + } + + public static final class Builder { + private ContractEntryBodyType discriminant; + private ContractDataEntryData data; + + public Builder discriminant(ContractEntryBodyType discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder data(ContractDataEntryData data) { + this.data = data; + return this; + } + + public ContractDataEntryBody build() { + ContractDataEntryBody val = new ContractDataEntryBody(); + val.setDiscriminant(discriminant); + val.setData(this.data); + return val; + } + } + + public static void encode( + XdrDataOutputStream stream, ContractDataEntryBody encodedContractDataEntryBody) + throws IOException { + // Xdrgen::AST::Identifier + // ContractEntryBodyType + stream.writeInt(encodedContractDataEntryBody.getDiscriminant().getValue()); + switch (encodedContractDataEntryBody.getDiscriminant()) { + case DATA_ENTRY: + ContractDataEntryData.encode(stream, encodedContractDataEntryBody.data); + break; + case EXPIRATION_EXTENSION: + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ContractDataEntryBody decode(XdrDataInputStream stream) throws IOException { + ContractDataEntryBody decodedContractDataEntryBody = new ContractDataEntryBody(); + ContractEntryBodyType discriminant = ContractEntryBodyType.decode(stream); + decodedContractDataEntryBody.setDiscriminant(discriminant); + switch (decodedContractDataEntryBody.getDiscriminant()) { + case DATA_ENTRY: + decodedContractDataEntryBody.data = ContractDataEntryData.decode(stream); + break; + case EXPIRATION_EXTENSION: + break; + } + return decodedContractDataEntryBody; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.data, this.bodyType); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ContractDataEntryBody)) { + return false; + } + + ContractDataEntryBody other = (ContractDataEntryBody) object; + return Objects.equal(this.data, other.data) && Objects.equal(this.bodyType, other.bodyType); + } + + public static class ContractDataEntryData { + public ContractDataEntryData() {} + + private Uint32 flags; + + public Uint32 getFlags() { + return this.flags; + } + + public void setFlags(Uint32 value) { + this.flags = value; + } + + private SCVal val; + + public SCVal getVal() { + return this.val; + } + + public void setVal(SCVal value) { + this.val = value; + } + + public static void encode( + XdrDataOutputStream stream, ContractDataEntryData encodedContractDataEntryData) + throws IOException { + Uint32.encode(stream, encodedContractDataEntryData.flags); + SCVal.encode(stream, encodedContractDataEntryData.val); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ContractDataEntryData decode(XdrDataInputStream stream) throws IOException { + ContractDataEntryData decodedContractDataEntryData = new ContractDataEntryData(); + decodedContractDataEntryData.flags = Uint32.decode(stream); + decodedContractDataEntryData.val = SCVal.decode(stream); + return decodedContractDataEntryData; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.flags, this.val); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ContractDataEntryData)) { + return false; + } + + ContractDataEntryData other = (ContractDataEntryData) object; + return Objects.equal(this.flags, other.flags) && Objects.equal(this.val, other.val); + } + + public static final class Builder { + private Uint32 flags; + private SCVal val; + + public Builder flags(Uint32 flags) { + this.flags = flags; + return this; + } + + public Builder val(SCVal val) { + this.val = val; + return this; + } + + public ContractDataEntryData build() { + ContractDataEntryData val = new ContractDataEntryData(); + val.setFlags(this.flags); + val.setVal(this.val); + return val; + } + } + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ContractDataFlags.java b/src/main/java/org/stellar/sdk/xdr/ContractDataFlags.java new file mode 100644 index 000000000..f1871f5ee --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ContractDataFlags.java @@ -0,0 +1,50 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum ContractDataFlags { +// // When set, the given entry does not recieve automatic expiration bumps +// // on access. Note that entries can still be bumped manually via the footprint. +// NO_AUTOBUMP = 0x1 +// }; + +// =========================================================================== +public enum ContractDataFlags implements XdrElement { + NO_AUTOBUMP(1), + ; + private int mValue; + + ContractDataFlags(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static ContractDataFlags decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 1: + return NO_AUTOBUMP; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, ContractDataFlags value) + throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ContractEntryBodyType.java b/src/main/java/org/stellar/sdk/xdr/ContractEntryBodyType.java new file mode 100644 index 000000000..eae02b395 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ContractEntryBodyType.java @@ -0,0 +1,52 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum ContractEntryBodyType { +// DATA_ENTRY = 0, +// EXPIRATION_EXTENSION = 1 +// }; + +// =========================================================================== +public enum ContractEntryBodyType implements XdrElement { + DATA_ENTRY(0), + EXPIRATION_EXTENSION(1), + ; + private int mValue; + + ContractEntryBodyType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static ContractEntryBodyType decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return DATA_ENTRY; + case 1: + return EXPIRATION_EXTENSION; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, ContractEntryBodyType value) + throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ContractEvent.java b/src/main/java/org/stellar/sdk/xdr/ContractEvent.java new file mode 100644 index 000000000..3b9c703b2 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ContractEvent.java @@ -0,0 +1,327 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct ContractEvent +// { +// // We can use this to add more fields, or because it +// // is first, to change ContractEvent into a union. +// ExtensionPoint ext; +// +// Hash* contractID; +// ContractEventType type; +// +// union switch (int v) +// { +// case 0: +// struct +// { +// SCVec topics; +// SCVal data; +// } v0; +// } +// body; +// }; + +// =========================================================================== +public class ContractEvent implements XdrElement { + public ContractEvent() {} + + private ExtensionPoint ext; + + public ExtensionPoint getExt() { + return this.ext; + } + + public void setExt(ExtensionPoint value) { + this.ext = value; + } + + private Hash contractID; + + public Hash getContractID() { + return this.contractID; + } + + public void setContractID(Hash value) { + this.contractID = value; + } + + private ContractEventType type; + + public ContractEventType getType() { + return this.type; + } + + public void setType(ContractEventType value) { + this.type = value; + } + + private ContractEventBody body; + + public ContractEventBody getBody() { + return this.body; + } + + public void setBody(ContractEventBody value) { + this.body = value; + } + + public static void encode(XdrDataOutputStream stream, ContractEvent encodedContractEvent) + throws IOException { + ExtensionPoint.encode(stream, encodedContractEvent.ext); + if (encodedContractEvent.contractID != null) { + stream.writeInt(1); + Hash.encode(stream, encodedContractEvent.contractID); + } else { + stream.writeInt(0); + } + ContractEventType.encode(stream, encodedContractEvent.type); + ContractEventBody.encode(stream, encodedContractEvent.body); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ContractEvent decode(XdrDataInputStream stream) throws IOException { + ContractEvent decodedContractEvent = new ContractEvent(); + decodedContractEvent.ext = ExtensionPoint.decode(stream); + int contractIDPresent = stream.readInt(); + if (contractIDPresent != 0) { + decodedContractEvent.contractID = Hash.decode(stream); + } + decodedContractEvent.type = ContractEventType.decode(stream); + decodedContractEvent.body = ContractEventBody.decode(stream); + return decodedContractEvent; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.ext, this.contractID, this.type, this.body); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ContractEvent)) { + return false; + } + + ContractEvent other = (ContractEvent) object; + return Objects.equal(this.ext, other.ext) + && Objects.equal(this.contractID, other.contractID) + && Objects.equal(this.type, other.type) + && Objects.equal(this.body, other.body); + } + + public static final class Builder { + private ExtensionPoint ext; + private Hash contractID; + private ContractEventType type; + private ContractEventBody body; + + public Builder ext(ExtensionPoint ext) { + this.ext = ext; + return this; + } + + public Builder contractID(Hash contractID) { + this.contractID = contractID; + return this; + } + + public Builder type(ContractEventType type) { + this.type = type; + return this; + } + + public Builder body(ContractEventBody body) { + this.body = body; + return this; + } + + public ContractEvent build() { + ContractEvent val = new ContractEvent(); + val.setExt(this.ext); + val.setContractID(this.contractID); + val.setType(this.type); + val.setBody(this.body); + return val; + } + } + + public static class ContractEventBody { + public ContractEventBody() {} + + Integer v; + + public Integer getDiscriminant() { + return this.v; + } + + public void setDiscriminant(Integer value) { + this.v = value; + } + + private ContractEventV0 v0; + + public ContractEventV0 getV0() { + return this.v0; + } + + public void setV0(ContractEventV0 value) { + this.v0 = value; + } + + public static final class Builder { + private Integer discriminant; + private ContractEventV0 v0; + + public Builder discriminant(Integer discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder v0(ContractEventV0 v0) { + this.v0 = v0; + return this; + } + + public ContractEventBody build() { + ContractEventBody val = new ContractEventBody(); + val.setDiscriminant(discriminant); + val.setV0(this.v0); + return val; + } + } + + public static void encode( + XdrDataOutputStream stream, ContractEventBody encodedContractEventBody) throws IOException { + // Xdrgen::AST::Typespecs::Int + // Integer + stream.writeInt(encodedContractEventBody.getDiscriminant().intValue()); + switch (encodedContractEventBody.getDiscriminant()) { + case 0: + ContractEventV0.encode(stream, encodedContractEventBody.v0); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ContractEventBody decode(XdrDataInputStream stream) throws IOException { + ContractEventBody decodedContractEventBody = new ContractEventBody(); + Integer discriminant = stream.readInt(); + decodedContractEventBody.setDiscriminant(discriminant); + switch (decodedContractEventBody.getDiscriminant()) { + case 0: + decodedContractEventBody.v0 = ContractEventV0.decode(stream); + break; + } + return decodedContractEventBody; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.v0, this.v); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ContractEventBody)) { + return false; + } + + ContractEventBody other = (ContractEventBody) object; + return Objects.equal(this.v0, other.v0) && Objects.equal(this.v, other.v); + } + + public static class ContractEventV0 { + public ContractEventV0() {} + + private SCVec topics; + + public SCVec getTopics() { + return this.topics; + } + + public void setTopics(SCVec value) { + this.topics = value; + } + + private SCVal data; + + public SCVal getData() { + return this.data; + } + + public void setData(SCVal value) { + this.data = value; + } + + public static void encode(XdrDataOutputStream stream, ContractEventV0 encodedContractEventV0) + throws IOException { + SCVec.encode(stream, encodedContractEventV0.topics); + SCVal.encode(stream, encodedContractEventV0.data); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ContractEventV0 decode(XdrDataInputStream stream) throws IOException { + ContractEventV0 decodedContractEventV0 = new ContractEventV0(); + decodedContractEventV0.topics = SCVec.decode(stream); + decodedContractEventV0.data = SCVal.decode(stream); + return decodedContractEventV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.topics, this.data); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ContractEventV0)) { + return false; + } + + ContractEventV0 other = (ContractEventV0) object; + return Objects.equal(this.topics, other.topics) && Objects.equal(this.data, other.data); + } + + public static final class Builder { + private SCVec topics; + private SCVal data; + + public Builder topics(SCVec topics) { + this.topics = topics; + return this; + } + + public Builder data(SCVal data) { + this.data = data; + return this; + } + + public ContractEventV0 build() { + ContractEventV0 val = new ContractEventV0(); + val.setTopics(this.topics); + val.setData(this.data); + return val; + } + } + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ContractEventType.java b/src/main/java/org/stellar/sdk/xdr/ContractEventType.java new file mode 100644 index 000000000..ce50fbafb --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ContractEventType.java @@ -0,0 +1,57 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum ContractEventType +// { +// SYSTEM = 0, +// CONTRACT = 1, +// DIAGNOSTIC = 2 +// }; + +// =========================================================================== +public enum ContractEventType implements XdrElement { + SYSTEM(0), + CONTRACT(1), + DIAGNOSTIC(2), + ; + private int mValue; + + ContractEventType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static ContractEventType decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return SYSTEM; + case 1: + return CONTRACT; + case 2: + return DIAGNOSTIC; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, ContractEventType value) + throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ContractExecutable.java b/src/main/java/org/stellar/sdk/xdr/ContractExecutable.java new file mode 100644 index 000000000..ef40b3766 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ContractExecutable.java @@ -0,0 +1,113 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union ContractExecutable switch (ContractExecutableType type) +// { +// case CONTRACT_EXECUTABLE_WASM: +// Hash wasm_hash; +// case CONTRACT_EXECUTABLE_TOKEN: +// void; +// }; + +// =========================================================================== +public class ContractExecutable implements XdrElement { + public ContractExecutable() {} + + ContractExecutableType type; + + public ContractExecutableType getDiscriminant() { + return this.type; + } + + public void setDiscriminant(ContractExecutableType value) { + this.type = value; + } + + private Hash wasm_hash; + + public Hash getWasm_hash() { + return this.wasm_hash; + } + + public void setWasm_hash(Hash value) { + this.wasm_hash = value; + } + + public static final class Builder { + private ContractExecutableType discriminant; + private Hash wasm_hash; + + public Builder discriminant(ContractExecutableType discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder wasm_hash(Hash wasm_hash) { + this.wasm_hash = wasm_hash; + return this; + } + + public ContractExecutable build() { + ContractExecutable val = new ContractExecutable(); + val.setDiscriminant(discriminant); + val.setWasm_hash(this.wasm_hash); + return val; + } + } + + public static void encode( + XdrDataOutputStream stream, ContractExecutable encodedContractExecutable) throws IOException { + // Xdrgen::AST::Identifier + // ContractExecutableType + stream.writeInt(encodedContractExecutable.getDiscriminant().getValue()); + switch (encodedContractExecutable.getDiscriminant()) { + case CONTRACT_EXECUTABLE_WASM: + Hash.encode(stream, encodedContractExecutable.wasm_hash); + break; + case CONTRACT_EXECUTABLE_TOKEN: + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ContractExecutable decode(XdrDataInputStream stream) throws IOException { + ContractExecutable decodedContractExecutable = new ContractExecutable(); + ContractExecutableType discriminant = ContractExecutableType.decode(stream); + decodedContractExecutable.setDiscriminant(discriminant); + switch (decodedContractExecutable.getDiscriminant()) { + case CONTRACT_EXECUTABLE_WASM: + decodedContractExecutable.wasm_hash = Hash.decode(stream); + break; + case CONTRACT_EXECUTABLE_TOKEN: + break; + } + return decodedContractExecutable; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.wasm_hash, this.type); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ContractExecutable)) { + return false; + } + + ContractExecutable other = (ContractExecutable) object; + return Objects.equal(this.wasm_hash, other.wasm_hash) && Objects.equal(this.type, other.type); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ContractExecutableType.java b/src/main/java/org/stellar/sdk/xdr/ContractExecutableType.java new file mode 100644 index 000000000..5689b059f --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ContractExecutableType.java @@ -0,0 +1,53 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum ContractExecutableType +// { +// CONTRACT_EXECUTABLE_WASM = 0, +// CONTRACT_EXECUTABLE_TOKEN = 1 +// }; + +// =========================================================================== +public enum ContractExecutableType implements XdrElement { + CONTRACT_EXECUTABLE_WASM(0), + CONTRACT_EXECUTABLE_TOKEN(1), + ; + private int mValue; + + ContractExecutableType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static ContractExecutableType decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return CONTRACT_EXECUTABLE_WASM; + case 1: + return CONTRACT_EXECUTABLE_TOKEN; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, ContractExecutableType value) + throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ContractIDPreimage.java b/src/main/java/org/stellar/sdk/xdr/ContractIDPreimage.java new file mode 100644 index 000000000..72f2ceecb --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ContractIDPreimage.java @@ -0,0 +1,220 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union ContractIDPreimage switch (ContractIDPreimageType type) +// { +// case CONTRACT_ID_PREIMAGE_FROM_ADDRESS: +// struct +// { +// SCAddress address; +// uint256 salt; +// } fromAddress; +// case CONTRACT_ID_PREIMAGE_FROM_ASSET: +// Asset fromAsset; +// }; + +// =========================================================================== +public class ContractIDPreimage implements XdrElement { + public ContractIDPreimage() {} + + ContractIDPreimageType type; + + public ContractIDPreimageType getDiscriminant() { + return this.type; + } + + public void setDiscriminant(ContractIDPreimageType value) { + this.type = value; + } + + private ContractIDPreimageFromAddress fromAddress; + + public ContractIDPreimageFromAddress getFromAddress() { + return this.fromAddress; + } + + public void setFromAddress(ContractIDPreimageFromAddress value) { + this.fromAddress = value; + } + + private Asset fromAsset; + + public Asset getFromAsset() { + return this.fromAsset; + } + + public void setFromAsset(Asset value) { + this.fromAsset = value; + } + + public static final class Builder { + private ContractIDPreimageType discriminant; + private ContractIDPreimageFromAddress fromAddress; + private Asset fromAsset; + + public Builder discriminant(ContractIDPreimageType discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder fromAddress(ContractIDPreimageFromAddress fromAddress) { + this.fromAddress = fromAddress; + return this; + } + + public Builder fromAsset(Asset fromAsset) { + this.fromAsset = fromAsset; + return this; + } + + public ContractIDPreimage build() { + ContractIDPreimage val = new ContractIDPreimage(); + val.setDiscriminant(discriminant); + val.setFromAddress(this.fromAddress); + val.setFromAsset(this.fromAsset); + return val; + } + } + + public static void encode( + XdrDataOutputStream stream, ContractIDPreimage encodedContractIDPreimage) throws IOException { + // Xdrgen::AST::Identifier + // ContractIDPreimageType + stream.writeInt(encodedContractIDPreimage.getDiscriminant().getValue()); + switch (encodedContractIDPreimage.getDiscriminant()) { + case CONTRACT_ID_PREIMAGE_FROM_ADDRESS: + ContractIDPreimageFromAddress.encode(stream, encodedContractIDPreimage.fromAddress); + break; + case CONTRACT_ID_PREIMAGE_FROM_ASSET: + Asset.encode(stream, encodedContractIDPreimage.fromAsset); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ContractIDPreimage decode(XdrDataInputStream stream) throws IOException { + ContractIDPreimage decodedContractIDPreimage = new ContractIDPreimage(); + ContractIDPreimageType discriminant = ContractIDPreimageType.decode(stream); + decodedContractIDPreimage.setDiscriminant(discriminant); + switch (decodedContractIDPreimage.getDiscriminant()) { + case CONTRACT_ID_PREIMAGE_FROM_ADDRESS: + decodedContractIDPreimage.fromAddress = ContractIDPreimageFromAddress.decode(stream); + break; + case CONTRACT_ID_PREIMAGE_FROM_ASSET: + decodedContractIDPreimage.fromAsset = Asset.decode(stream); + break; + } + return decodedContractIDPreimage; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.fromAddress, this.fromAsset, this.type); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ContractIDPreimage)) { + return false; + } + + ContractIDPreimage other = (ContractIDPreimage) object; + return Objects.equal(this.fromAddress, other.fromAddress) + && Objects.equal(this.fromAsset, other.fromAsset) + && Objects.equal(this.type, other.type); + } + + public static class ContractIDPreimageFromAddress { + public ContractIDPreimageFromAddress() {} + + private SCAddress address; + + public SCAddress getAddress() { + return this.address; + } + + public void setAddress(SCAddress value) { + this.address = value; + } + + private Uint256 salt; + + public Uint256 getSalt() { + return this.salt; + } + + public void setSalt(Uint256 value) { + this.salt = value; + } + + public static void encode( + XdrDataOutputStream stream, + ContractIDPreimageFromAddress encodedContractIDPreimageFromAddress) + throws IOException { + SCAddress.encode(stream, encodedContractIDPreimageFromAddress.address); + Uint256.encode(stream, encodedContractIDPreimageFromAddress.salt); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static ContractIDPreimageFromAddress decode(XdrDataInputStream stream) + throws IOException { + ContractIDPreimageFromAddress decodedContractIDPreimageFromAddress = + new ContractIDPreimageFromAddress(); + decodedContractIDPreimageFromAddress.address = SCAddress.decode(stream); + decodedContractIDPreimageFromAddress.salt = Uint256.decode(stream); + return decodedContractIDPreimageFromAddress; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.address, this.salt); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ContractIDPreimageFromAddress)) { + return false; + } + + ContractIDPreimageFromAddress other = (ContractIDPreimageFromAddress) object; + return Objects.equal(this.address, other.address) && Objects.equal(this.salt, other.salt); + } + + public static final class Builder { + private SCAddress address; + private Uint256 salt; + + public Builder address(SCAddress address) { + this.address = address; + return this; + } + + public Builder salt(Uint256 salt) { + this.salt = salt; + return this; + } + + public ContractIDPreimageFromAddress build() { + ContractIDPreimageFromAddress val = new ContractIDPreimageFromAddress(); + val.setAddress(this.address); + val.setSalt(this.salt); + return val; + } + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/ContractIDPreimageType.java b/src/main/java/org/stellar/sdk/xdr/ContractIDPreimageType.java new file mode 100644 index 000000000..af4ba33b2 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/ContractIDPreimageType.java @@ -0,0 +1,53 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum ContractIDPreimageType +// { +// CONTRACT_ID_PREIMAGE_FROM_ADDRESS = 0, +// CONTRACT_ID_PREIMAGE_FROM_ASSET = 1 +// }; + +// =========================================================================== +public enum ContractIDPreimageType implements XdrElement { + CONTRACT_ID_PREIMAGE_FROM_ADDRESS(0), + CONTRACT_ID_PREIMAGE_FROM_ASSET(1), + ; + private int mValue; + + ContractIDPreimageType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static ContractIDPreimageType decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return CONTRACT_ID_PREIMAGE_FROM_ADDRESS; + case 1: + return CONTRACT_ID_PREIMAGE_FROM_ASSET; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, ContractIDPreimageType value) + throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/CreateAccountOp.java b/src/main/java/org/stellar/sdk/xdr/CreateAccountOp.java index 22ff67755..876177148 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreateAccountOp.java +++ b/src/main/java/org/stellar/sdk/xdr/CreateAccountOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -87,8 +89,8 @@ public Builder startingBalance(Int64 startingBalance) { public CreateAccountOp build() { CreateAccountOp val = new CreateAccountOp(); - val.setDestination(destination); - val.setStartingBalance(startingBalance); + val.setDestination(this.destination); + val.setStartingBalance(this.startingBalance); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/CreateAccountResult.java b/src/main/java/org/stellar/sdk/xdr/CreateAccountResult.java index 17cb74466..d2f106765 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreateAccountResult.java +++ b/src/main/java/org/stellar/sdk/xdr/CreateAccountResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,10 @@ // { // case CREATE_ACCOUNT_SUCCESS: // void; -// default: +// case CREATE_ACCOUNT_MALFORMED: +// case CREATE_ACCOUNT_UNDERFUNDED: +// case CREATE_ACCOUNT_LOW_RESERVE: +// case CREATE_ACCOUNT_ALREADY_EXIST: // void; // }; @@ -54,7 +59,10 @@ public static void encode( switch (encodedCreateAccountResult.getDiscriminant()) { case CREATE_ACCOUNT_SUCCESS: break; - default: + case CREATE_ACCOUNT_MALFORMED: + case CREATE_ACCOUNT_UNDERFUNDED: + case CREATE_ACCOUNT_LOW_RESERVE: + case CREATE_ACCOUNT_ALREADY_EXIST: break; } } @@ -70,7 +78,10 @@ public static CreateAccountResult decode(XdrDataInputStream stream) throws IOExc switch (decodedCreateAccountResult.getDiscriminant()) { case CREATE_ACCOUNT_SUCCESS: break; - default: + case CREATE_ACCOUNT_MALFORMED: + case CREATE_ACCOUNT_UNDERFUNDED: + case CREATE_ACCOUNT_LOW_RESERVE: + case CREATE_ACCOUNT_ALREADY_EXIST: break; } return decodedCreateAccountResult; diff --git a/src/main/java/org/stellar/sdk/xdr/CreateAccountResultCode.java b/src/main/java/org/stellar/sdk/xdr/CreateAccountResultCode.java index 894409420..0af2f9d09 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreateAccountResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/CreateAccountResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceOp.java b/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceOp.java index 5ccc4285b..27da5e9f0 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceOp.java +++ b/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -117,9 +119,9 @@ public Builder claimants(Claimant[] claimants) { public CreateClaimableBalanceOp build() { CreateClaimableBalanceOp val = new CreateClaimableBalanceOp(); - val.setAsset(asset); - val.setAmount(amount); - val.setClaimants(claimants); + val.setAsset(this.asset); + val.setAmount(this.amount); + val.setClaimants(this.claimants); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResult.java b/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResult.java index 000e75597..08cff736f 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResult.java +++ b/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -13,7 +15,11 @@ // { // case CREATE_CLAIMABLE_BALANCE_SUCCESS: // ClaimableBalanceID balanceID; -// default: +// case CREATE_CLAIMABLE_BALANCE_MALFORMED: +// case CREATE_CLAIMABLE_BALANCE_LOW_RESERVE: +// case CREATE_CLAIMABLE_BALANCE_NO_TRUST: +// case CREATE_CLAIMABLE_BALANCE_NOT_AUTHORIZED: +// case CREATE_CLAIMABLE_BALANCE_UNDERFUNDED: // void; // }; @@ -58,7 +64,7 @@ public Builder balanceID(ClaimableBalanceID balanceID) { public CreateClaimableBalanceResult build() { CreateClaimableBalanceResult val = new CreateClaimableBalanceResult(); val.setDiscriminant(discriminant); - val.setBalanceID(balanceID); + val.setBalanceID(this.balanceID); return val; } } @@ -73,7 +79,11 @@ public static void encode( case CREATE_CLAIMABLE_BALANCE_SUCCESS: ClaimableBalanceID.encode(stream, encodedCreateClaimableBalanceResult.balanceID); break; - default: + case CREATE_CLAIMABLE_BALANCE_MALFORMED: + case CREATE_CLAIMABLE_BALANCE_LOW_RESERVE: + case CREATE_CLAIMABLE_BALANCE_NO_TRUST: + case CREATE_CLAIMABLE_BALANCE_NOT_AUTHORIZED: + case CREATE_CLAIMABLE_BALANCE_UNDERFUNDED: break; } } @@ -91,7 +101,11 @@ public static CreateClaimableBalanceResult decode(XdrDataInputStream stream) thr case CREATE_CLAIMABLE_BALANCE_SUCCESS: decodedCreateClaimableBalanceResult.balanceID = ClaimableBalanceID.decode(stream); break; - default: + case CREATE_CLAIMABLE_BALANCE_MALFORMED: + case CREATE_CLAIMABLE_BALANCE_LOW_RESERVE: + case CREATE_CLAIMABLE_BALANCE_NO_TRUST: + case CREATE_CLAIMABLE_BALANCE_NOT_AUTHORIZED: + case CREATE_CLAIMABLE_BALANCE_UNDERFUNDED: break; } return decodedCreateClaimableBalanceResult; diff --git a/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResultCode.java b/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResultCode.java index b7880cd66..99c0d7138 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/CreateContractArgs.java b/src/main/java/org/stellar/sdk/xdr/CreateContractArgs.java new file mode 100644 index 000000000..1d38d73e9 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/CreateContractArgs.java @@ -0,0 +1,97 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct CreateContractArgs +// { +// ContractIDPreimage contractIDPreimage; +// ContractExecutable executable; +// }; + +// =========================================================================== +public class CreateContractArgs implements XdrElement { + public CreateContractArgs() {} + + private ContractIDPreimage contractIDPreimage; + + public ContractIDPreimage getContractIDPreimage() { + return this.contractIDPreimage; + } + + public void setContractIDPreimage(ContractIDPreimage value) { + this.contractIDPreimage = value; + } + + private ContractExecutable executable; + + public ContractExecutable getExecutable() { + return this.executable; + } + + public void setExecutable(ContractExecutable value) { + this.executable = value; + } + + public static void encode( + XdrDataOutputStream stream, CreateContractArgs encodedCreateContractArgs) throws IOException { + ContractIDPreimage.encode(stream, encodedCreateContractArgs.contractIDPreimage); + ContractExecutable.encode(stream, encodedCreateContractArgs.executable); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static CreateContractArgs decode(XdrDataInputStream stream) throws IOException { + CreateContractArgs decodedCreateContractArgs = new CreateContractArgs(); + decodedCreateContractArgs.contractIDPreimage = ContractIDPreimage.decode(stream); + decodedCreateContractArgs.executable = ContractExecutable.decode(stream); + return decodedCreateContractArgs; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.contractIDPreimage, this.executable); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof CreateContractArgs)) { + return false; + } + + CreateContractArgs other = (CreateContractArgs) object; + return Objects.equal(this.contractIDPreimage, other.contractIDPreimage) + && Objects.equal(this.executable, other.executable); + } + + public static final class Builder { + private ContractIDPreimage contractIDPreimage; + private ContractExecutable executable; + + public Builder contractIDPreimage(ContractIDPreimage contractIDPreimage) { + this.contractIDPreimage = contractIDPreimage; + return this; + } + + public Builder executable(ContractExecutable executable) { + this.executable = executable; + return this; + } + + public CreateContractArgs build() { + CreateContractArgs val = new CreateContractArgs(); + val.setContractIDPreimage(this.contractIDPreimage); + val.setExecutable(this.executable); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/CreatePassiveOfferOp.java b/src/main/java/org/stellar/sdk/xdr/CreatePassiveOfferOp.java deleted file mode 100644 index 040ced2f8..000000000 --- a/src/main/java/org/stellar/sdk/xdr/CreatePassiveOfferOp.java +++ /dev/null @@ -1,79 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -package org.stellar.sdk.xdr; - -import java.io.IOException; - -// === xdr source ============================================================ - -// struct CreatePassiveOfferOp -// { -// Asset selling; // A -// Asset buying; // B -// int64 amount; // amount taker gets. if set to 0, delete the offer -// Price price; // cost of A in terms of B -// }; - -// =========================================================================== -public class CreatePassiveOfferOp { - public CreatePassiveOfferOp() {} - - private Asset selling; - - public Asset getSelling() { - return this.selling; - } - - public void setSelling(Asset value) { - this.selling = value; - } - - private Asset buying; - - public Asset getBuying() { - return this.buying; - } - - public void setBuying(Asset value) { - this.buying = value; - } - - private Int64 amount; - - public Int64 getAmount() { - return this.amount; - } - - public void setAmount(Int64 value) { - this.amount = value; - } - - private Price price; - - public Price getPrice() { - return this.price; - } - - public void setPrice(Price value) { - this.price = value; - } - - public static void encode( - XdrDataOutputStream stream, CreatePassiveOfferOp encodedCreatePassiveOfferOp) - throws IOException { - Asset.encode(stream, encodedCreatePassiveOfferOp.selling); - Asset.encode(stream, encodedCreatePassiveOfferOp.buying); - Int64.encode(stream, encodedCreatePassiveOfferOp.amount); - Price.encode(stream, encodedCreatePassiveOfferOp.price); - } - - public static CreatePassiveOfferOp decode(XdrDataInputStream stream) throws IOException { - CreatePassiveOfferOp decodedCreatePassiveOfferOp = new CreatePassiveOfferOp(); - decodedCreatePassiveOfferOp.selling = Asset.decode(stream); - decodedCreatePassiveOfferOp.buying = Asset.decode(stream); - decodedCreatePassiveOfferOp.amount = Int64.decode(stream); - decodedCreatePassiveOfferOp.price = Price.decode(stream); - return decodedCreatePassiveOfferOp; - } -} diff --git a/src/main/java/org/stellar/sdk/xdr/CreatePassiveSellOfferOp.java b/src/main/java/org/stellar/sdk/xdr/CreatePassiveSellOfferOp.java index 9d98406a7..2e6543775 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreatePassiveSellOfferOp.java +++ b/src/main/java/org/stellar/sdk/xdr/CreatePassiveSellOfferOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -128,10 +130,10 @@ public Builder price(Price price) { public CreatePassiveSellOfferOp build() { CreatePassiveSellOfferOp val = new CreatePassiveSellOfferOp(); - val.setSelling(selling); - val.setBuying(buying); - val.setAmount(amount); - val.setPrice(price); + val.setSelling(this.selling); + val.setBuying(this.buying); + val.setAmount(this.amount); + val.setPrice(this.price); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/CryptoKeyType.java b/src/main/java/org/stellar/sdk/xdr/CryptoKeyType.java index 613f6978b..bcb36cd6e 100644 --- a/src/main/java/org/stellar/sdk/xdr/CryptoKeyType.java +++ b/src/main/java/org/stellar/sdk/xdr/CryptoKeyType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/Curve25519Public.java b/src/main/java/org/stellar/sdk/xdr/Curve25519Public.java index 7ad32c318..9534a1992 100644 --- a/src/main/java/org/stellar/sdk/xdr/Curve25519Public.java +++ b/src/main/java/org/stellar/sdk/xdr/Curve25519Public.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; @@ -70,7 +72,7 @@ public Builder key(byte[] key) { public Curve25519Public build() { Curve25519Public val = new Curve25519Public(); - val.setKey(key); + val.setKey(this.key); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/Curve25519Secret.java b/src/main/java/org/stellar/sdk/xdr/Curve25519Secret.java index 7495c70bc..8ca01275b 100644 --- a/src/main/java/org/stellar/sdk/xdr/Curve25519Secret.java +++ b/src/main/java/org/stellar/sdk/xdr/Curve25519Secret.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; @@ -70,7 +72,7 @@ public Builder key(byte[] key) { public Curve25519Secret build() { Curve25519Secret val = new Curve25519Secret(); - val.setKey(key); + val.setKey(this.key); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/DataEntry.java b/src/main/java/org/stellar/sdk/xdr/DataEntry.java index 48ba0ca45..b1faf5d7a 100644 --- a/src/main/java/org/stellar/sdk/xdr/DataEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/DataEntry.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -134,10 +136,10 @@ public Builder ext(DataEntryExt ext) { public DataEntry build() { DataEntry val = new DataEntry(); - val.setAccountID(accountID); - val.setDataName(dataName); - val.setDataValue(dataValue); - val.setExt(ext); + val.setAccountID(this.accountID); + val.setDataName(this.dataName); + val.setDataValue(this.dataValue); + val.setExt(this.ext); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/DataValue.java b/src/main/java/org/stellar/sdk/xdr/DataValue.java index a4889ca1f..e9ff69844 100644 --- a/src/main/java/org/stellar/sdk/xdr/DataValue.java +++ b/src/main/java/org/stellar/sdk/xdr/DataValue.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/org/stellar/sdk/xdr/DecoratedSignature.java b/src/main/java/org/stellar/sdk/xdr/DecoratedSignature.java index ba36e9529..b522ac237 100644 --- a/src/main/java/org/stellar/sdk/xdr/DecoratedSignature.java +++ b/src/main/java/org/stellar/sdk/xdr/DecoratedSignature.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -86,8 +88,8 @@ public Builder signature(Signature signature) { public DecoratedSignature build() { DecoratedSignature val = new DecoratedSignature(); - val.setHint(hint); - val.setSignature(signature); + val.setHint(this.hint); + val.setSignature(this.signature); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/DiagnosticEvent.java b/src/main/java/org/stellar/sdk/xdr/DiagnosticEvent.java new file mode 100644 index 000000000..9f9c3e355 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/DiagnosticEvent.java @@ -0,0 +1,97 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct DiagnosticEvent +// { +// bool inSuccessfulContractCall; +// ContractEvent event; +// }; + +// =========================================================================== +public class DiagnosticEvent implements XdrElement { + public DiagnosticEvent() {} + + private Boolean inSuccessfulContractCall; + + public Boolean getInSuccessfulContractCall() { + return this.inSuccessfulContractCall; + } + + public void setInSuccessfulContractCall(Boolean value) { + this.inSuccessfulContractCall = value; + } + + private ContractEvent event; + + public ContractEvent getEvent() { + return this.event; + } + + public void setEvent(ContractEvent value) { + this.event = value; + } + + public static void encode(XdrDataOutputStream stream, DiagnosticEvent encodedDiagnosticEvent) + throws IOException { + stream.writeInt(encodedDiagnosticEvent.inSuccessfulContractCall ? 1 : 0); + ContractEvent.encode(stream, encodedDiagnosticEvent.event); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static DiagnosticEvent decode(XdrDataInputStream stream) throws IOException { + DiagnosticEvent decodedDiagnosticEvent = new DiagnosticEvent(); + decodedDiagnosticEvent.inSuccessfulContractCall = stream.readInt() == 1 ? true : false; + decodedDiagnosticEvent.event = ContractEvent.decode(stream); + return decodedDiagnosticEvent; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.inSuccessfulContractCall, this.event); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof DiagnosticEvent)) { + return false; + } + + DiagnosticEvent other = (DiagnosticEvent) object; + return Objects.equal(this.inSuccessfulContractCall, other.inSuccessfulContractCall) + && Objects.equal(this.event, other.event); + } + + public static final class Builder { + private Boolean inSuccessfulContractCall; + private ContractEvent event; + + public Builder inSuccessfulContractCall(Boolean inSuccessfulContractCall) { + this.inSuccessfulContractCall = inSuccessfulContractCall; + return this; + } + + public Builder event(ContractEvent event) { + this.event = event; + return this; + } + + public DiagnosticEvent build() { + DiagnosticEvent val = new DiagnosticEvent(); + val.setInSuccessfulContractCall(this.inSuccessfulContractCall); + val.setEvent(this.event); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/DontHave.java b/src/main/java/org/stellar/sdk/xdr/DontHave.java index 9c101b424..f72aeb633 100644 --- a/src/main/java/org/stellar/sdk/xdr/DontHave.java +++ b/src/main/java/org/stellar/sdk/xdr/DontHave.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -86,8 +88,8 @@ public Builder reqHash(Uint256 reqHash) { public DontHave build() { DontHave val = new DontHave(); - val.setType(type); - val.setReqHash(reqHash); + val.setType(this.type); + val.setReqHash(this.reqHash); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/Duration.java b/src/main/java/org/stellar/sdk/xdr/Duration.java index afdf76a67..f71595f4b 100644 --- a/src/main/java/org/stellar/sdk/xdr/Duration.java +++ b/src/main/java/org/stellar/sdk/xdr/Duration.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; diff --git a/src/main/java/org/stellar/sdk/xdr/EncryptedBody.java b/src/main/java/org/stellar/sdk/xdr/EncryptedBody.java index 0d0634b15..9b63a633e 100644 --- a/src/main/java/org/stellar/sdk/xdr/EncryptedBody.java +++ b/src/main/java/org/stellar/sdk/xdr/EncryptedBody.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResult.java b/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResult.java index 1384295cc..9b9fd0758 100644 --- a/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResult.java +++ b/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -13,7 +15,7 @@ // { // case END_SPONSORING_FUTURE_RESERVES_SUCCESS: // void; -// default: +// case END_SPONSORING_FUTURE_RESERVES_NOT_SPONSORED: // void; // }; @@ -56,7 +58,7 @@ public static void encode( switch (encodedEndSponsoringFutureReservesResult.getDiscriminant()) { case END_SPONSORING_FUTURE_RESERVES_SUCCESS: break; - default: + case END_SPONSORING_FUTURE_RESERVES_NOT_SPONSORED: break; } } @@ -75,7 +77,7 @@ public static EndSponsoringFutureReservesResult decode(XdrDataInputStream stream switch (decodedEndSponsoringFutureReservesResult.getDiscriminant()) { case END_SPONSORING_FUTURE_RESERVES_SUCCESS: break; - default: + case END_SPONSORING_FUTURE_RESERVES_NOT_SPONSORED: break; } return decodedEndSponsoringFutureReservesResult; diff --git a/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResultCode.java b/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResultCode.java index e5a1263a4..067946337 100644 --- a/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/EnvelopeType.java b/src/main/java/org/stellar/sdk/xdr/EnvelopeType.java index 9b415bfed..836692826 100644 --- a/src/main/java/org/stellar/sdk/xdr/EnvelopeType.java +++ b/src/main/java/org/stellar/sdk/xdr/EnvelopeType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ @@ -16,7 +18,9 @@ // ENVELOPE_TYPE_SCPVALUE = 4, // ENVELOPE_TYPE_TX_FEE_BUMP = 5, // ENVELOPE_TYPE_OP_ID = 6, -// ENVELOPE_TYPE_POOL_REVOKE_OP_ID = 7 +// ENVELOPE_TYPE_POOL_REVOKE_OP_ID = 7, +// ENVELOPE_TYPE_CONTRACT_ID = 8, +// ENVELOPE_TYPE_SOROBAN_AUTHORIZATION = 9 // }; // =========================================================================== @@ -29,6 +33,8 @@ public enum EnvelopeType implements XdrElement { ENVELOPE_TYPE_TX_FEE_BUMP(5), ENVELOPE_TYPE_OP_ID(6), ENVELOPE_TYPE_POOL_REVOKE_OP_ID(7), + ENVELOPE_TYPE_CONTRACT_ID(8), + ENVELOPE_TYPE_SOROBAN_AUTHORIZATION(9), ; private int mValue; @@ -59,6 +65,10 @@ public static EnvelopeType decode(XdrDataInputStream stream) throws IOException return ENVELOPE_TYPE_OP_ID; case 7: return ENVELOPE_TYPE_POOL_REVOKE_OP_ID; + case 8: + return ENVELOPE_TYPE_CONTRACT_ID; + case 9: + return ENVELOPE_TYPE_SOROBAN_AUTHORIZATION; default: throw new RuntimeException("Unknown enum value: " + value); } diff --git a/src/main/java/org/stellar/sdk/xdr/Error.java b/src/main/java/org/stellar/sdk/xdr/Error.java index d4fb3e2ed..2060216b9 100644 --- a/src/main/java/org/stellar/sdk/xdr/Error.java +++ b/src/main/java/org/stellar/sdk/xdr/Error.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -85,8 +87,8 @@ public Builder msg(XdrString msg) { public Error build() { Error val = new Error(); - val.setCode(code); - val.setMsg(msg); + val.setCode(this.code); + val.setMsg(this.msg); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ErrorCode.java b/src/main/java/org/stellar/sdk/xdr/ErrorCode.java index 8d987f005..554effd5f 100644 --- a/src/main/java/org/stellar/sdk/xdr/ErrorCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ErrorCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/ExtensionPoint.java b/src/main/java/org/stellar/sdk/xdr/ExtensionPoint.java index 28e383dbd..f7a666a1a 100644 --- a/src/main/java/org/stellar/sdk/xdr/ExtensionPoint.java +++ b/src/main/java/org/stellar/sdk/xdr/ExtensionPoint.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; diff --git a/src/main/java/org/stellar/sdk/xdr/FeeBumpTransaction.java b/src/main/java/org/stellar/sdk/xdr/FeeBumpTransaction.java index 9f78faa9e..7698fad97 100644 --- a/src/main/java/org/stellar/sdk/xdr/FeeBumpTransaction.java +++ b/src/main/java/org/stellar/sdk/xdr/FeeBumpTransaction.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -137,10 +139,10 @@ public Builder ext(FeeBumpTransactionExt ext) { public FeeBumpTransaction build() { FeeBumpTransaction val = new FeeBumpTransaction(); - val.setFeeSource(feeSource); - val.setFee(fee); - val.setInnerTx(innerTx); - val.setExt(ext); + val.setFeeSource(this.feeSource); + val.setFee(this.fee); + val.setInnerTx(this.innerTx); + val.setExt(this.ext); return val; } } @@ -185,7 +187,7 @@ public Builder v1(TransactionV1Envelope v1) { public FeeBumpTransactionInnerTx build() { FeeBumpTransactionInnerTx val = new FeeBumpTransactionInnerTx(); val.setDiscriminant(discriminant); - val.setV1(v1); + val.setV1(this.v1); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/FeeBumpTransactionEnvelope.java b/src/main/java/org/stellar/sdk/xdr/FeeBumpTransactionEnvelope.java index e71b87522..22d3fd767 100644 --- a/src/main/java/org/stellar/sdk/xdr/FeeBumpTransactionEnvelope.java +++ b/src/main/java/org/stellar/sdk/xdr/FeeBumpTransactionEnvelope.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -98,8 +100,8 @@ public Builder signatures(DecoratedSignature[] signatures) { public FeeBumpTransactionEnvelope build() { FeeBumpTransactionEnvelope val = new FeeBumpTransactionEnvelope(); - val.setTx(tx); - val.setSignatures(signatures); + val.setTx(this.tx); + val.setSignatures(this.signatures); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/FloodAdvert.java b/src/main/java/org/stellar/sdk/xdr/FloodAdvert.java new file mode 100644 index 000000000..22e8f8b9c --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/FloodAdvert.java @@ -0,0 +1,76 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct FloodAdvert +// { +// TxAdvertVector txHashes; +// }; + +// =========================================================================== +public class FloodAdvert implements XdrElement { + public FloodAdvert() {} + + private TxAdvertVector txHashes; + + public TxAdvertVector getTxHashes() { + return this.txHashes; + } + + public void setTxHashes(TxAdvertVector value) { + this.txHashes = value; + } + + public static void encode(XdrDataOutputStream stream, FloodAdvert encodedFloodAdvert) + throws IOException { + TxAdvertVector.encode(stream, encodedFloodAdvert.txHashes); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static FloodAdvert decode(XdrDataInputStream stream) throws IOException { + FloodAdvert decodedFloodAdvert = new FloodAdvert(); + decodedFloodAdvert.txHashes = TxAdvertVector.decode(stream); + return decodedFloodAdvert; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.txHashes); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof FloodAdvert)) { + return false; + } + + FloodAdvert other = (FloodAdvert) object; + return Objects.equal(this.txHashes, other.txHashes); + } + + public static final class Builder { + private TxAdvertVector txHashes; + + public Builder txHashes(TxAdvertVector txHashes) { + this.txHashes = txHashes; + return this; + } + + public FloodAdvert build() { + FloodAdvert val = new FloodAdvert(); + val.setTxHashes(this.txHashes); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/FloodDemand.java b/src/main/java/org/stellar/sdk/xdr/FloodDemand.java new file mode 100644 index 000000000..f21c6db2b --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/FloodDemand.java @@ -0,0 +1,76 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct FloodDemand +// { +// TxDemandVector txHashes; +// }; + +// =========================================================================== +public class FloodDemand implements XdrElement { + public FloodDemand() {} + + private TxDemandVector txHashes; + + public TxDemandVector getTxHashes() { + return this.txHashes; + } + + public void setTxHashes(TxDemandVector value) { + this.txHashes = value; + } + + public static void encode(XdrDataOutputStream stream, FloodDemand encodedFloodDemand) + throws IOException { + TxDemandVector.encode(stream, encodedFloodDemand.txHashes); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static FloodDemand decode(XdrDataInputStream stream) throws IOException { + FloodDemand decodedFloodDemand = new FloodDemand(); + decodedFloodDemand.txHashes = TxDemandVector.decode(stream); + return decodedFloodDemand; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.txHashes); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof FloodDemand)) { + return false; + } + + FloodDemand other = (FloodDemand) object; + return Objects.equal(this.txHashes, other.txHashes); + } + + public static final class Builder { + private TxDemandVector txHashes; + + public Builder txHashes(TxDemandVector txHashes) { + this.txHashes = txHashes; + return this; + } + + public FloodDemand build() { + FloodDemand val = new FloodDemand(); + val.setTxHashes(this.txHashes); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/GeneralizedTransactionSet.java b/src/main/java/org/stellar/sdk/xdr/GeneralizedTransactionSet.java new file mode 100644 index 000000000..0ea7eec2f --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/GeneralizedTransactionSet.java @@ -0,0 +1,109 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union GeneralizedTransactionSet switch (int v) +// { +// // We consider the legacy TransactionSet to be v0. +// case 1: +// TransactionSetV1 v1TxSet; +// }; + +// =========================================================================== +public class GeneralizedTransactionSet implements XdrElement { + public GeneralizedTransactionSet() {} + + Integer v; + + public Integer getDiscriminant() { + return this.v; + } + + public void setDiscriminant(Integer value) { + this.v = value; + } + + private TransactionSetV1 v1TxSet; + + public TransactionSetV1 getV1TxSet() { + return this.v1TxSet; + } + + public void setV1TxSet(TransactionSetV1 value) { + this.v1TxSet = value; + } + + public static final class Builder { + private Integer discriminant; + private TransactionSetV1 v1TxSet; + + public Builder discriminant(Integer discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder v1TxSet(TransactionSetV1 v1TxSet) { + this.v1TxSet = v1TxSet; + return this; + } + + public GeneralizedTransactionSet build() { + GeneralizedTransactionSet val = new GeneralizedTransactionSet(); + val.setDiscriminant(discriminant); + val.setV1TxSet(this.v1TxSet); + return val; + } + } + + public static void encode( + XdrDataOutputStream stream, GeneralizedTransactionSet encodedGeneralizedTransactionSet) + throws IOException { + // Xdrgen::AST::Typespecs::Int + // Integer + stream.writeInt(encodedGeneralizedTransactionSet.getDiscriminant().intValue()); + switch (encodedGeneralizedTransactionSet.getDiscriminant()) { + case 1: + TransactionSetV1.encode(stream, encodedGeneralizedTransactionSet.v1TxSet); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static GeneralizedTransactionSet decode(XdrDataInputStream stream) throws IOException { + GeneralizedTransactionSet decodedGeneralizedTransactionSet = new GeneralizedTransactionSet(); + Integer discriminant = stream.readInt(); + decodedGeneralizedTransactionSet.setDiscriminant(discriminant); + switch (decodedGeneralizedTransactionSet.getDiscriminant()) { + case 1: + decodedGeneralizedTransactionSet.v1TxSet = TransactionSetV1.decode(stream); + break; + } + return decodedGeneralizedTransactionSet; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.v1TxSet, this.v); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof GeneralizedTransactionSet)) { + return false; + } + + GeneralizedTransactionSet other = (GeneralizedTransactionSet) object; + return Objects.equal(this.v1TxSet, other.v1TxSet) && Objects.equal(this.v, other.v); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/Hash.java b/src/main/java/org/stellar/sdk/xdr/Hash.java index aa92d602b..9b2678c9c 100644 --- a/src/main/java/org/stellar/sdk/xdr/Hash.java +++ b/src/main/java/org/stellar/sdk/xdr/Hash.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/org/stellar/sdk/xdr/HashIDPreimage.java b/src/main/java/org/stellar/sdk/xdr/HashIDPreimage.java index 71c9e940b..931f0c3f3 100644 --- a/src/main/java/org/stellar/sdk/xdr/HashIDPreimage.java +++ b/src/main/java/org/stellar/sdk/xdr/HashIDPreimage.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -26,6 +28,20 @@ // PoolID liquidityPoolID; // Asset asset; // } revokeID; +// case ENVELOPE_TYPE_CONTRACT_ID: +// struct +// { +// Hash networkID; +// ContractIDPreimage contractIDPreimage; +// } contractID; +// case ENVELOPE_TYPE_SOROBAN_AUTHORIZATION: +// struct +// { +// Hash networkID; +// int64 nonce; +// uint32 signatureExpirationLedger; +// SorobanAuthorizedInvocation invocation; +// } sorobanAuthorization; // }; // =========================================================================== @@ -62,10 +78,32 @@ public void setRevokeID(HashIDPreimageRevokeID value) { this.revokeID = value; } + private HashIDPreimageContractID contractID; + + public HashIDPreimageContractID getContractID() { + return this.contractID; + } + + public void setContractID(HashIDPreimageContractID value) { + this.contractID = value; + } + + private HashIDPreimageSorobanAuthorization sorobanAuthorization; + + public HashIDPreimageSorobanAuthorization getSorobanAuthorization() { + return this.sorobanAuthorization; + } + + public void setSorobanAuthorization(HashIDPreimageSorobanAuthorization value) { + this.sorobanAuthorization = value; + } + public static final class Builder { private EnvelopeType discriminant; private HashIDPreimageOperationID operationID; private HashIDPreimageRevokeID revokeID; + private HashIDPreimageContractID contractID; + private HashIDPreimageSorobanAuthorization sorobanAuthorization; public Builder discriminant(EnvelopeType discriminant) { this.discriminant = discriminant; @@ -82,11 +120,23 @@ public Builder revokeID(HashIDPreimageRevokeID revokeID) { return this; } + public Builder contractID(HashIDPreimageContractID contractID) { + this.contractID = contractID; + return this; + } + + public Builder sorobanAuthorization(HashIDPreimageSorobanAuthorization sorobanAuthorization) { + this.sorobanAuthorization = sorobanAuthorization; + return this; + } + public HashIDPreimage build() { HashIDPreimage val = new HashIDPreimage(); val.setDiscriminant(discriminant); - val.setOperationID(operationID); - val.setRevokeID(revokeID); + val.setOperationID(this.operationID); + val.setRevokeID(this.revokeID); + val.setContractID(this.contractID); + val.setSorobanAuthorization(this.sorobanAuthorization); return val; } } @@ -103,6 +153,13 @@ public static void encode(XdrDataOutputStream stream, HashIDPreimage encodedHash case ENVELOPE_TYPE_POOL_REVOKE_OP_ID: HashIDPreimageRevokeID.encode(stream, encodedHashIDPreimage.revokeID); break; + case ENVELOPE_TYPE_CONTRACT_ID: + HashIDPreimageContractID.encode(stream, encodedHashIDPreimage.contractID); + break; + case ENVELOPE_TYPE_SOROBAN_AUTHORIZATION: + HashIDPreimageSorobanAuthorization.encode( + stream, encodedHashIDPreimage.sorobanAuthorization); + break; } } @@ -121,13 +178,21 @@ public static HashIDPreimage decode(XdrDataInputStream stream) throws IOExceptio case ENVELOPE_TYPE_POOL_REVOKE_OP_ID: decodedHashIDPreimage.revokeID = HashIDPreimageRevokeID.decode(stream); break; + case ENVELOPE_TYPE_CONTRACT_ID: + decodedHashIDPreimage.contractID = HashIDPreimageContractID.decode(stream); + break; + case ENVELOPE_TYPE_SOROBAN_AUTHORIZATION: + decodedHashIDPreimage.sorobanAuthorization = + HashIDPreimageSorobanAuthorization.decode(stream); + break; } return decodedHashIDPreimage; } @Override public int hashCode() { - return Objects.hashCode(this.operationID, this.revokeID, this.type); + return Objects.hashCode( + this.operationID, this.revokeID, this.contractID, this.sorobanAuthorization, this.type); } @Override @@ -139,6 +204,8 @@ public boolean equals(Object object) { HashIDPreimage other = (HashIDPreimage) object; return Objects.equal(this.operationID, other.operationID) && Objects.equal(this.revokeID, other.revokeID) + && Objects.equal(this.contractID, other.contractID) + && Objects.equal(this.sorobanAuthorization, other.sorobanAuthorization) && Objects.equal(this.type, other.type); } @@ -234,9 +301,9 @@ public Builder opNum(Uint32 opNum) { public HashIDPreimageOperationID build() { HashIDPreimageOperationID val = new HashIDPreimageOperationID(); - val.setSourceAccount(sourceAccount); - val.setSeqNum(seqNum); - val.setOpNum(opNum); + val.setSourceAccount(this.sourceAccount); + val.setSeqNum(this.seqNum); + val.setOpNum(this.opNum); return val; } } @@ -373,11 +440,217 @@ public Builder asset(Asset asset) { public HashIDPreimageRevokeID build() { HashIDPreimageRevokeID val = new HashIDPreimageRevokeID(); - val.setSourceAccount(sourceAccount); - val.setSeqNum(seqNum); - val.setOpNum(opNum); - val.setLiquidityPoolID(liquidityPoolID); - val.setAsset(asset); + val.setSourceAccount(this.sourceAccount); + val.setSeqNum(this.seqNum); + val.setOpNum(this.opNum); + val.setLiquidityPoolID(this.liquidityPoolID); + val.setAsset(this.asset); + return val; + } + } + } + + public static class HashIDPreimageContractID { + public HashIDPreimageContractID() {} + + private Hash networkID; + + public Hash getNetworkID() { + return this.networkID; + } + + public void setNetworkID(Hash value) { + this.networkID = value; + } + + private ContractIDPreimage contractIDPreimage; + + public ContractIDPreimage getContractIDPreimage() { + return this.contractIDPreimage; + } + + public void setContractIDPreimage(ContractIDPreimage value) { + this.contractIDPreimage = value; + } + + public static void encode( + XdrDataOutputStream stream, HashIDPreimageContractID encodedHashIDPreimageContractID) + throws IOException { + Hash.encode(stream, encodedHashIDPreimageContractID.networkID); + ContractIDPreimage.encode(stream, encodedHashIDPreimageContractID.contractIDPreimage); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static HashIDPreimageContractID decode(XdrDataInputStream stream) throws IOException { + HashIDPreimageContractID decodedHashIDPreimageContractID = new HashIDPreimageContractID(); + decodedHashIDPreimageContractID.networkID = Hash.decode(stream); + decodedHashIDPreimageContractID.contractIDPreimage = ContractIDPreimage.decode(stream); + return decodedHashIDPreimageContractID; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.networkID, this.contractIDPreimage); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof HashIDPreimageContractID)) { + return false; + } + + HashIDPreimageContractID other = (HashIDPreimageContractID) object; + return Objects.equal(this.networkID, other.networkID) + && Objects.equal(this.contractIDPreimage, other.contractIDPreimage); + } + + public static final class Builder { + private Hash networkID; + private ContractIDPreimage contractIDPreimage; + + public Builder networkID(Hash networkID) { + this.networkID = networkID; + return this; + } + + public Builder contractIDPreimage(ContractIDPreimage contractIDPreimage) { + this.contractIDPreimage = contractIDPreimage; + return this; + } + + public HashIDPreimageContractID build() { + HashIDPreimageContractID val = new HashIDPreimageContractID(); + val.setNetworkID(this.networkID); + val.setContractIDPreimage(this.contractIDPreimage); + return val; + } + } + } + + public static class HashIDPreimageSorobanAuthorization { + public HashIDPreimageSorobanAuthorization() {} + + private Hash networkID; + + public Hash getNetworkID() { + return this.networkID; + } + + public void setNetworkID(Hash value) { + this.networkID = value; + } + + private Int64 nonce; + + public Int64 getNonce() { + return this.nonce; + } + + public void setNonce(Int64 value) { + this.nonce = value; + } + + private Uint32 signatureExpirationLedger; + + public Uint32 getSignatureExpirationLedger() { + return this.signatureExpirationLedger; + } + + public void setSignatureExpirationLedger(Uint32 value) { + this.signatureExpirationLedger = value; + } + + private SorobanAuthorizedInvocation invocation; + + public SorobanAuthorizedInvocation getInvocation() { + return this.invocation; + } + + public void setInvocation(SorobanAuthorizedInvocation value) { + this.invocation = value; + } + + public static void encode( + XdrDataOutputStream stream, + HashIDPreimageSorobanAuthorization encodedHashIDPreimageSorobanAuthorization) + throws IOException { + Hash.encode(stream, encodedHashIDPreimageSorobanAuthorization.networkID); + Int64.encode(stream, encodedHashIDPreimageSorobanAuthorization.nonce); + Uint32.encode(stream, encodedHashIDPreimageSorobanAuthorization.signatureExpirationLedger); + SorobanAuthorizedInvocation.encode( + stream, encodedHashIDPreimageSorobanAuthorization.invocation); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static HashIDPreimageSorobanAuthorization decode(XdrDataInputStream stream) + throws IOException { + HashIDPreimageSorobanAuthorization decodedHashIDPreimageSorobanAuthorization = + new HashIDPreimageSorobanAuthorization(); + decodedHashIDPreimageSorobanAuthorization.networkID = Hash.decode(stream); + decodedHashIDPreimageSorobanAuthorization.nonce = Int64.decode(stream); + decodedHashIDPreimageSorobanAuthorization.signatureExpirationLedger = Uint32.decode(stream); + decodedHashIDPreimageSorobanAuthorization.invocation = + SorobanAuthorizedInvocation.decode(stream); + return decodedHashIDPreimageSorobanAuthorization; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.networkID, this.nonce, this.signatureExpirationLedger, this.invocation); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof HashIDPreimageSorobanAuthorization)) { + return false; + } + + HashIDPreimageSorobanAuthorization other = (HashIDPreimageSorobanAuthorization) object; + return Objects.equal(this.networkID, other.networkID) + && Objects.equal(this.nonce, other.nonce) + && Objects.equal(this.signatureExpirationLedger, other.signatureExpirationLedger) + && Objects.equal(this.invocation, other.invocation); + } + + public static final class Builder { + private Hash networkID; + private Int64 nonce; + private Uint32 signatureExpirationLedger; + private SorobanAuthorizedInvocation invocation; + + public Builder networkID(Hash networkID) { + this.networkID = networkID; + return this; + } + + public Builder nonce(Int64 nonce) { + this.nonce = nonce; + return this; + } + + public Builder signatureExpirationLedger(Uint32 signatureExpirationLedger) { + this.signatureExpirationLedger = signatureExpirationLedger; + return this; + } + + public Builder invocation(SorobanAuthorizedInvocation invocation) { + this.invocation = invocation; + return this; + } + + public HashIDPreimageSorobanAuthorization build() { + HashIDPreimageSorobanAuthorization val = new HashIDPreimageSorobanAuthorization(); + val.setNetworkID(this.networkID); + val.setNonce(this.nonce); + val.setSignatureExpirationLedger(this.signatureExpirationLedger); + val.setInvocation(this.invocation); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/Hello.java b/src/main/java/org/stellar/sdk/xdr/Hello.java index 4f06c2295..f1fec50d6 100644 --- a/src/main/java/org/stellar/sdk/xdr/Hello.java +++ b/src/main/java/org/stellar/sdk/xdr/Hello.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -235,15 +237,15 @@ public Builder nonce(Uint256 nonce) { public Hello build() { Hello val = new Hello(); - val.setLedgerVersion(ledgerVersion); - val.setOverlayVersion(overlayVersion); - val.setOverlayMinVersion(overlayMinVersion); - val.setNetworkID(networkID); - val.setVersionStr(versionStr); - val.setListeningPort(listeningPort); - val.setPeerID(peerID); - val.setCert(cert); - val.setNonce(nonce); + val.setLedgerVersion(this.ledgerVersion); + val.setOverlayVersion(this.overlayVersion); + val.setOverlayMinVersion(this.overlayMinVersion); + val.setNetworkID(this.networkID); + val.setVersionStr(this.versionStr); + val.setListeningPort(this.listeningPort); + val.setPeerID(this.peerID); + val.setCert(this.cert); + val.setNonce(this.nonce); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/HmacSha256Key.java b/src/main/java/org/stellar/sdk/xdr/HmacSha256Key.java index 3aaa1e648..1b84a0074 100644 --- a/src/main/java/org/stellar/sdk/xdr/HmacSha256Key.java +++ b/src/main/java/org/stellar/sdk/xdr/HmacSha256Key.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; @@ -70,7 +72,7 @@ public Builder key(byte[] key) { public HmacSha256Key build() { HmacSha256Key val = new HmacSha256Key(); - val.setKey(key); + val.setKey(this.key); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/HmacSha256Mac.java b/src/main/java/org/stellar/sdk/xdr/HmacSha256Mac.java index 640084148..a24a2d717 100644 --- a/src/main/java/org/stellar/sdk/xdr/HmacSha256Mac.java +++ b/src/main/java/org/stellar/sdk/xdr/HmacSha256Mac.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; @@ -70,7 +72,7 @@ public Builder mac(byte[] mac) { public HmacSha256Mac build() { HmacSha256Mac val = new HmacSha256Mac(); - val.setMac(mac); + val.setMac(this.mac); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/HostFunction.java b/src/main/java/org/stellar/sdk/xdr/HostFunction.java new file mode 100644 index 000000000..28d837199 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/HostFunction.java @@ -0,0 +1,166 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// union HostFunction switch (HostFunctionType type) +// { +// case HOST_FUNCTION_TYPE_INVOKE_CONTRACT: +// SCVec invokeContract; +// case HOST_FUNCTION_TYPE_CREATE_CONTRACT: +// CreateContractArgs createContract; +// case HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM: +// opaque wasm<>; +// }; + +// =========================================================================== +public class HostFunction implements XdrElement { + public HostFunction() {} + + HostFunctionType type; + + public HostFunctionType getDiscriminant() { + return this.type; + } + + public void setDiscriminant(HostFunctionType value) { + this.type = value; + } + + private SCVec invokeContract; + + public SCVec getInvokeContract() { + return this.invokeContract; + } + + public void setInvokeContract(SCVec value) { + this.invokeContract = value; + } + + private CreateContractArgs createContract; + + public CreateContractArgs getCreateContract() { + return this.createContract; + } + + public void setCreateContract(CreateContractArgs value) { + this.createContract = value; + } + + private byte[] wasm; + + public byte[] getWasm() { + return this.wasm; + } + + public void setWasm(byte[] value) { + this.wasm = value; + } + + public static final class Builder { + private HostFunctionType discriminant; + private SCVec invokeContract; + private CreateContractArgs createContract; + private byte[] wasm; + + public Builder discriminant(HostFunctionType discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder invokeContract(SCVec invokeContract) { + this.invokeContract = invokeContract; + return this; + } + + public Builder createContract(CreateContractArgs createContract) { + this.createContract = createContract; + return this; + } + + public Builder wasm(byte[] wasm) { + this.wasm = wasm; + return this; + } + + public HostFunction build() { + HostFunction val = new HostFunction(); + val.setDiscriminant(discriminant); + val.setInvokeContract(this.invokeContract); + val.setCreateContract(this.createContract); + val.setWasm(this.wasm); + return val; + } + } + + public static void encode(XdrDataOutputStream stream, HostFunction encodedHostFunction) + throws IOException { + // Xdrgen::AST::Identifier + // HostFunctionType + stream.writeInt(encodedHostFunction.getDiscriminant().getValue()); + switch (encodedHostFunction.getDiscriminant()) { + case HOST_FUNCTION_TYPE_INVOKE_CONTRACT: + SCVec.encode(stream, encodedHostFunction.invokeContract); + break; + case HOST_FUNCTION_TYPE_CREATE_CONTRACT: + CreateContractArgs.encode(stream, encodedHostFunction.createContract); + break; + case HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM: + int wasmsize = encodedHostFunction.wasm.length; + stream.writeInt(wasmsize); + stream.write(encodedHostFunction.getWasm(), 0, wasmsize); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static HostFunction decode(XdrDataInputStream stream) throws IOException { + HostFunction decodedHostFunction = new HostFunction(); + HostFunctionType discriminant = HostFunctionType.decode(stream); + decodedHostFunction.setDiscriminant(discriminant); + switch (decodedHostFunction.getDiscriminant()) { + case HOST_FUNCTION_TYPE_INVOKE_CONTRACT: + decodedHostFunction.invokeContract = SCVec.decode(stream); + break; + case HOST_FUNCTION_TYPE_CREATE_CONTRACT: + decodedHostFunction.createContract = CreateContractArgs.decode(stream); + break; + case HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM: + int wasmsize = stream.readInt(); + decodedHostFunction.wasm = new byte[wasmsize]; + stream.read(decodedHostFunction.wasm, 0, wasmsize); + break; + } + return decodedHostFunction; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.invokeContract, this.createContract, Arrays.hashCode(this.wasm), this.type); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof HostFunction)) { + return false; + } + + HostFunction other = (HostFunction) object; + return Objects.equal(this.invokeContract, other.invokeContract) + && Objects.equal(this.createContract, other.createContract) + && Arrays.equals(this.wasm, other.wasm) + && Objects.equal(this.type, other.type); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/HostFunctionType.java b/src/main/java/org/stellar/sdk/xdr/HostFunctionType.java new file mode 100644 index 000000000..d8bfdbc8f --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/HostFunctionType.java @@ -0,0 +1,56 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum HostFunctionType +// { +// HOST_FUNCTION_TYPE_INVOKE_CONTRACT = 0, +// HOST_FUNCTION_TYPE_CREATE_CONTRACT = 1, +// HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM = 2 +// }; + +// =========================================================================== +public enum HostFunctionType implements XdrElement { + HOST_FUNCTION_TYPE_INVOKE_CONTRACT(0), + HOST_FUNCTION_TYPE_CREATE_CONTRACT(1), + HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM(2), + ; + private int mValue; + + HostFunctionType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static HostFunctionType decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return HOST_FUNCTION_TYPE_INVOKE_CONTRACT; + case 1: + return HOST_FUNCTION_TYPE_CREATE_CONTRACT; + case 2: + return HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, HostFunctionType value) throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/IPAddrType.java b/src/main/java/org/stellar/sdk/xdr/IPAddrType.java index 730e13574..08d887d10 100644 --- a/src/main/java/org/stellar/sdk/xdr/IPAddrType.java +++ b/src/main/java/org/stellar/sdk/xdr/IPAddrType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/InflationPayout.java b/src/main/java/org/stellar/sdk/xdr/InflationPayout.java index 9323d73e5..1c9ed7008 100644 --- a/src/main/java/org/stellar/sdk/xdr/InflationPayout.java +++ b/src/main/java/org/stellar/sdk/xdr/InflationPayout.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -87,8 +89,8 @@ public Builder amount(Int64 amount) { public InflationPayout build() { InflationPayout val = new InflationPayout(); - val.setDestination(destination); - val.setAmount(amount); + val.setDestination(this.destination); + val.setAmount(this.amount); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/InflationResult.java b/src/main/java/org/stellar/sdk/xdr/InflationResult.java index 55e250d66..33c8bd2f9 100644 --- a/src/main/java/org/stellar/sdk/xdr/InflationResult.java +++ b/src/main/java/org/stellar/sdk/xdr/InflationResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -13,7 +15,7 @@ // { // case INFLATION_SUCCESS: // InflationPayout payouts<>; -// default: +// case INFLATION_NOT_TIME: // void; // }; @@ -58,7 +60,7 @@ public Builder payouts(InflationPayout[] payouts) { public InflationResult build() { InflationResult val = new InflationResult(); val.setDiscriminant(discriminant); - val.setPayouts(payouts); + val.setPayouts(this.payouts); return val; } } @@ -76,7 +78,7 @@ public static void encode(XdrDataOutputStream stream, InflationResult encodedInf InflationPayout.encode(stream, encodedInflationResult.payouts[i]); } break; - default: + case INFLATION_NOT_TIME: break; } } @@ -97,7 +99,7 @@ public static InflationResult decode(XdrDataInputStream stream) throws IOExcepti decodedInflationResult.payouts[i] = InflationPayout.decode(stream); } break; - default: + case INFLATION_NOT_TIME: break; } return decodedInflationResult; diff --git a/src/main/java/org/stellar/sdk/xdr/InflationResultCode.java b/src/main/java/org/stellar/sdk/xdr/InflationResultCode.java index 3b14a7730..01a7f5f5a 100644 --- a/src/main/java/org/stellar/sdk/xdr/InflationResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/InflationResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/InnerTransactionResult.java b/src/main/java/org/stellar/sdk/xdr/InnerTransactionResult.java index 91d775b2e..823051107 100644 --- a/src/main/java/org/stellar/sdk/xdr/InnerTransactionResult.java +++ b/src/main/java/org/stellar/sdk/xdr/InnerTransactionResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -35,6 +37,7 @@ // case txBAD_SPONSORSHIP: // case txBAD_MIN_SEQ_AGE_OR_GAP: // case txMALFORMED: +// case txSOROBAN_RESOURCE_LIMIT_EXCEEDED: // void; // } // result; @@ -141,9 +144,9 @@ public Builder ext(InnerTransactionResultExt ext) { public InnerTransactionResult build() { InnerTransactionResult val = new InnerTransactionResult(); - val.setFeeCharged(feeCharged); - val.setResult(result); - val.setExt(ext); + val.setFeeCharged(this.feeCharged); + val.setResult(this.result); + val.setExt(this.ext); return val; } } @@ -188,7 +191,7 @@ public Builder results(OperationResult[] results) { public InnerTransactionResultResult build() { InnerTransactionResultResult val = new InnerTransactionResultResult(); val.setDiscriminant(discriminant); - val.setResults(results); + val.setResults(this.results); return val; } } @@ -223,6 +226,7 @@ public static void encode( case txBAD_SPONSORSHIP: case txBAD_MIN_SEQ_AGE_OR_GAP: case txMALFORMED: + case txSOROBAN_RESOURCE_LIMIT_EXCEEDED: break; } } @@ -260,6 +264,7 @@ public static InnerTransactionResultResult decode(XdrDataInputStream stream) case txBAD_SPONSORSHIP: case txBAD_MIN_SEQ_AGE_OR_GAP: case txMALFORMED: + case txSOROBAN_RESOURCE_LIMIT_EXCEEDED: break; } return decodedInnerTransactionResultResult; diff --git a/src/main/java/org/stellar/sdk/xdr/InnerTransactionResultPair.java b/src/main/java/org/stellar/sdk/xdr/InnerTransactionResultPair.java index fd9943af8..8a07e440a 100644 --- a/src/main/java/org/stellar/sdk/xdr/InnerTransactionResultPair.java +++ b/src/main/java/org/stellar/sdk/xdr/InnerTransactionResultPair.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -88,8 +90,8 @@ public Builder result(InnerTransactionResult result) { public InnerTransactionResultPair build() { InnerTransactionResultPair val = new InnerTransactionResultPair(); - val.setTransactionHash(transactionHash); - val.setResult(result); + val.setTransactionHash(this.transactionHash); + val.setResult(this.result); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/Int128Parts.java b/src/main/java/org/stellar/sdk/xdr/Int128Parts.java new file mode 100644 index 000000000..d77fcd1da --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/Int128Parts.java @@ -0,0 +1,95 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct Int128Parts { +// int64 hi; +// uint64 lo; +// }; + +// =========================================================================== +public class Int128Parts implements XdrElement { + public Int128Parts() {} + + private Int64 hi; + + public Int64 getHi() { + return this.hi; + } + + public void setHi(Int64 value) { + this.hi = value; + } + + private Uint64 lo; + + public Uint64 getLo() { + return this.lo; + } + + public void setLo(Uint64 value) { + this.lo = value; + } + + public static void encode(XdrDataOutputStream stream, Int128Parts encodedInt128Parts) + throws IOException { + Int64.encode(stream, encodedInt128Parts.hi); + Uint64.encode(stream, encodedInt128Parts.lo); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static Int128Parts decode(XdrDataInputStream stream) throws IOException { + Int128Parts decodedInt128Parts = new Int128Parts(); + decodedInt128Parts.hi = Int64.decode(stream); + decodedInt128Parts.lo = Uint64.decode(stream); + return decodedInt128Parts; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.hi, this.lo); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof Int128Parts)) { + return false; + } + + Int128Parts other = (Int128Parts) object; + return Objects.equal(this.hi, other.hi) && Objects.equal(this.lo, other.lo); + } + + public static final class Builder { + private Int64 hi; + private Uint64 lo; + + public Builder hi(Int64 hi) { + this.hi = hi; + return this; + } + + public Builder lo(Uint64 lo) { + this.lo = lo; + return this; + } + + public Int128Parts build() { + Int128Parts val = new Int128Parts(); + val.setHi(this.hi); + val.setLo(this.lo); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/Int256Parts.java b/src/main/java/org/stellar/sdk/xdr/Int256Parts.java new file mode 100644 index 000000000..6f477f135 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/Int256Parts.java @@ -0,0 +1,138 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct Int256Parts { +// int64 hi_hi; +// uint64 hi_lo; +// uint64 lo_hi; +// uint64 lo_lo; +// }; + +// =========================================================================== +public class Int256Parts implements XdrElement { + public Int256Parts() {} + + private Int64 hi_hi; + + public Int64 getHi_hi() { + return this.hi_hi; + } + + public void setHi_hi(Int64 value) { + this.hi_hi = value; + } + + private Uint64 hi_lo; + + public Uint64 getHi_lo() { + return this.hi_lo; + } + + public void setHi_lo(Uint64 value) { + this.hi_lo = value; + } + + private Uint64 lo_hi; + + public Uint64 getLo_hi() { + return this.lo_hi; + } + + public void setLo_hi(Uint64 value) { + this.lo_hi = value; + } + + private Uint64 lo_lo; + + public Uint64 getLo_lo() { + return this.lo_lo; + } + + public void setLo_lo(Uint64 value) { + this.lo_lo = value; + } + + public static void encode(XdrDataOutputStream stream, Int256Parts encodedInt256Parts) + throws IOException { + Int64.encode(stream, encodedInt256Parts.hi_hi); + Uint64.encode(stream, encodedInt256Parts.hi_lo); + Uint64.encode(stream, encodedInt256Parts.lo_hi); + Uint64.encode(stream, encodedInt256Parts.lo_lo); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static Int256Parts decode(XdrDataInputStream stream) throws IOException { + Int256Parts decodedInt256Parts = new Int256Parts(); + decodedInt256Parts.hi_hi = Int64.decode(stream); + decodedInt256Parts.hi_lo = Uint64.decode(stream); + decodedInt256Parts.lo_hi = Uint64.decode(stream); + decodedInt256Parts.lo_lo = Uint64.decode(stream); + return decodedInt256Parts; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.hi_hi, this.hi_lo, this.lo_hi, this.lo_lo); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof Int256Parts)) { + return false; + } + + Int256Parts other = (Int256Parts) object; + return Objects.equal(this.hi_hi, other.hi_hi) + && Objects.equal(this.hi_lo, other.hi_lo) + && Objects.equal(this.lo_hi, other.lo_hi) + && Objects.equal(this.lo_lo, other.lo_lo); + } + + public static final class Builder { + private Int64 hi_hi; + private Uint64 hi_lo; + private Uint64 lo_hi; + private Uint64 lo_lo; + + public Builder hi_hi(Int64 hi_hi) { + this.hi_hi = hi_hi; + return this; + } + + public Builder hi_lo(Uint64 hi_lo) { + this.hi_lo = hi_lo; + return this; + } + + public Builder lo_hi(Uint64 lo_hi) { + this.lo_hi = lo_hi; + return this; + } + + public Builder lo_lo(Uint64 lo_lo) { + this.lo_lo = lo_lo; + return this; + } + + public Int256Parts build() { + Int256Parts val = new Int256Parts(); + val.setHi_hi(this.hi_hi); + val.setHi_lo(this.hi_lo); + val.setLo_hi(this.lo_hi); + val.setLo_lo(this.lo_lo); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/Int32.java b/src/main/java/org/stellar/sdk/xdr/Int32.java index 8ed969006..15ba2b46e 100644 --- a/src/main/java/org/stellar/sdk/xdr/Int32.java +++ b/src/main/java/org/stellar/sdk/xdr/Int32.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; diff --git a/src/main/java/org/stellar/sdk/xdr/Int64.java b/src/main/java/org/stellar/sdk/xdr/Int64.java index 56ab7604b..08f7bb020 100644 --- a/src/main/java/org/stellar/sdk/xdr/Int64.java +++ b/src/main/java/org/stellar/sdk/xdr/Int64.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; diff --git a/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionOp.java b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionOp.java new file mode 100644 index 000000000..4805f092e --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionOp.java @@ -0,0 +1,109 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct InvokeHostFunctionOp +// { +// // Host function to invoke. +// HostFunction hostFunction; +// // Per-address authorizations for this host function. +// SorobanAuthorizationEntry auth<>; +// }; + +// =========================================================================== +public class InvokeHostFunctionOp implements XdrElement { + public InvokeHostFunctionOp() {} + + private HostFunction hostFunction; + + public HostFunction getHostFunction() { + return this.hostFunction; + } + + public void setHostFunction(HostFunction value) { + this.hostFunction = value; + } + + private SorobanAuthorizationEntry[] auth; + + public SorobanAuthorizationEntry[] getAuth() { + return this.auth; + } + + public void setAuth(SorobanAuthorizationEntry[] value) { + this.auth = value; + } + + public static void encode( + XdrDataOutputStream stream, InvokeHostFunctionOp encodedInvokeHostFunctionOp) + throws IOException { + HostFunction.encode(stream, encodedInvokeHostFunctionOp.hostFunction); + int authsize = encodedInvokeHostFunctionOp.getAuth().length; + stream.writeInt(authsize); + for (int i = 0; i < authsize; i++) { + SorobanAuthorizationEntry.encode(stream, encodedInvokeHostFunctionOp.auth[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static InvokeHostFunctionOp decode(XdrDataInputStream stream) throws IOException { + InvokeHostFunctionOp decodedInvokeHostFunctionOp = new InvokeHostFunctionOp(); + decodedInvokeHostFunctionOp.hostFunction = HostFunction.decode(stream); + int authsize = stream.readInt(); + decodedInvokeHostFunctionOp.auth = new SorobanAuthorizationEntry[authsize]; + for (int i = 0; i < authsize; i++) { + decodedInvokeHostFunctionOp.auth[i] = SorobanAuthorizationEntry.decode(stream); + } + return decodedInvokeHostFunctionOp; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.hostFunction, Arrays.hashCode(this.auth)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof InvokeHostFunctionOp)) { + return false; + } + + InvokeHostFunctionOp other = (InvokeHostFunctionOp) object; + return Objects.equal(this.hostFunction, other.hostFunction) + && Arrays.equals(this.auth, other.auth); + } + + public static final class Builder { + private HostFunction hostFunction; + private SorobanAuthorizationEntry[] auth; + + public Builder hostFunction(HostFunction hostFunction) { + this.hostFunction = hostFunction; + return this; + } + + public Builder auth(SorobanAuthorizationEntry[] auth) { + this.auth = auth; + return this; + } + + public InvokeHostFunctionOp build() { + InvokeHostFunctionOp val = new InvokeHostFunctionOp(); + val.setHostFunction(this.hostFunction); + val.setAuth(this.auth); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResult.java b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResult.java new file mode 100644 index 000000000..417cd911d --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResult.java @@ -0,0 +1,123 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union InvokeHostFunctionResult switch (InvokeHostFunctionResultCode code) +// { +// case INVOKE_HOST_FUNCTION_SUCCESS: +// Hash success; // sha256(InvokeHostFunctionSuccessPreImage) +// case INVOKE_HOST_FUNCTION_MALFORMED: +// case INVOKE_HOST_FUNCTION_TRAPPED: +// case INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED: +// case INVOKE_HOST_FUNCTION_ENTRY_EXPIRED: +// void; +// }; + +// =========================================================================== +public class InvokeHostFunctionResult implements XdrElement { + public InvokeHostFunctionResult() {} + + InvokeHostFunctionResultCode code; + + public InvokeHostFunctionResultCode getDiscriminant() { + return this.code; + } + + public void setDiscriminant(InvokeHostFunctionResultCode value) { + this.code = value; + } + + private Hash success; + + public Hash getSuccess() { + return this.success; + } + + public void setSuccess(Hash value) { + this.success = value; + } + + public static final class Builder { + private InvokeHostFunctionResultCode discriminant; + private Hash success; + + public Builder discriminant(InvokeHostFunctionResultCode discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder success(Hash success) { + this.success = success; + return this; + } + + public InvokeHostFunctionResult build() { + InvokeHostFunctionResult val = new InvokeHostFunctionResult(); + val.setDiscriminant(discriminant); + val.setSuccess(this.success); + return val; + } + } + + public static void encode( + XdrDataOutputStream stream, InvokeHostFunctionResult encodedInvokeHostFunctionResult) + throws IOException { + // Xdrgen::AST::Identifier + // InvokeHostFunctionResultCode + stream.writeInt(encodedInvokeHostFunctionResult.getDiscriminant().getValue()); + switch (encodedInvokeHostFunctionResult.getDiscriminant()) { + case INVOKE_HOST_FUNCTION_SUCCESS: + Hash.encode(stream, encodedInvokeHostFunctionResult.success); + break; + case INVOKE_HOST_FUNCTION_MALFORMED: + case INVOKE_HOST_FUNCTION_TRAPPED: + case INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED: + case INVOKE_HOST_FUNCTION_ENTRY_EXPIRED: + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static InvokeHostFunctionResult decode(XdrDataInputStream stream) throws IOException { + InvokeHostFunctionResult decodedInvokeHostFunctionResult = new InvokeHostFunctionResult(); + InvokeHostFunctionResultCode discriminant = InvokeHostFunctionResultCode.decode(stream); + decodedInvokeHostFunctionResult.setDiscriminant(discriminant); + switch (decodedInvokeHostFunctionResult.getDiscriminant()) { + case INVOKE_HOST_FUNCTION_SUCCESS: + decodedInvokeHostFunctionResult.success = Hash.decode(stream); + break; + case INVOKE_HOST_FUNCTION_MALFORMED: + case INVOKE_HOST_FUNCTION_TRAPPED: + case INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED: + case INVOKE_HOST_FUNCTION_ENTRY_EXPIRED: + break; + } + return decodedInvokeHostFunctionResult; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.success, this.code); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof InvokeHostFunctionResult)) { + return false; + } + + InvokeHostFunctionResult other = (InvokeHostFunctionResult) object; + return Objects.equal(this.success, other.success) && Objects.equal(this.code, other.code); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResultCode.java b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResultCode.java new file mode 100644 index 000000000..1f211d434 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResultCode.java @@ -0,0 +1,68 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum InvokeHostFunctionResultCode +// { +// // codes considered as "success" for the operation +// INVOKE_HOST_FUNCTION_SUCCESS = 0, +// +// // codes considered as "failure" for the operation +// INVOKE_HOST_FUNCTION_MALFORMED = -1, +// INVOKE_HOST_FUNCTION_TRAPPED = -2, +// INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED = -3, +// INVOKE_HOST_FUNCTION_ENTRY_EXPIRED = -4 +// }; + +// =========================================================================== +public enum InvokeHostFunctionResultCode implements XdrElement { + INVOKE_HOST_FUNCTION_SUCCESS(0), + INVOKE_HOST_FUNCTION_MALFORMED(-1), + INVOKE_HOST_FUNCTION_TRAPPED(-2), + INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED(-3), + INVOKE_HOST_FUNCTION_ENTRY_EXPIRED(-4), + ; + private int mValue; + + InvokeHostFunctionResultCode(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static InvokeHostFunctionResultCode decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return INVOKE_HOST_FUNCTION_SUCCESS; + case -1: + return INVOKE_HOST_FUNCTION_MALFORMED; + case -2: + return INVOKE_HOST_FUNCTION_TRAPPED; + case -3: + return INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED; + case -4: + return INVOKE_HOST_FUNCTION_ENTRY_EXPIRED; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, InvokeHostFunctionResultCode value) + throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionSuccessPreImage.java b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionSuccessPreImage.java new file mode 100644 index 000000000..f8ef45bb1 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionSuccessPreImage.java @@ -0,0 +1,110 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct InvokeHostFunctionSuccessPreImage +// { +// SCVal returnValue; +// ContractEvent events<>; +// }; + +// =========================================================================== +public class InvokeHostFunctionSuccessPreImage implements XdrElement { + public InvokeHostFunctionSuccessPreImage() {} + + private SCVal returnValue; + + public SCVal getReturnValue() { + return this.returnValue; + } + + public void setReturnValue(SCVal value) { + this.returnValue = value; + } + + private ContractEvent[] events; + + public ContractEvent[] getEvents() { + return this.events; + } + + public void setEvents(ContractEvent[] value) { + this.events = value; + } + + public static void encode( + XdrDataOutputStream stream, + InvokeHostFunctionSuccessPreImage encodedInvokeHostFunctionSuccessPreImage) + throws IOException { + SCVal.encode(stream, encodedInvokeHostFunctionSuccessPreImage.returnValue); + int eventssize = encodedInvokeHostFunctionSuccessPreImage.getEvents().length; + stream.writeInt(eventssize); + for (int i = 0; i < eventssize; i++) { + ContractEvent.encode(stream, encodedInvokeHostFunctionSuccessPreImage.events[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static InvokeHostFunctionSuccessPreImage decode(XdrDataInputStream stream) + throws IOException { + InvokeHostFunctionSuccessPreImage decodedInvokeHostFunctionSuccessPreImage = + new InvokeHostFunctionSuccessPreImage(); + decodedInvokeHostFunctionSuccessPreImage.returnValue = SCVal.decode(stream); + int eventssize = stream.readInt(); + decodedInvokeHostFunctionSuccessPreImage.events = new ContractEvent[eventssize]; + for (int i = 0; i < eventssize; i++) { + decodedInvokeHostFunctionSuccessPreImage.events[i] = ContractEvent.decode(stream); + } + return decodedInvokeHostFunctionSuccessPreImage; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.returnValue, Arrays.hashCode(this.events)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof InvokeHostFunctionSuccessPreImage)) { + return false; + } + + InvokeHostFunctionSuccessPreImage other = (InvokeHostFunctionSuccessPreImage) object; + return Objects.equal(this.returnValue, other.returnValue) + && Arrays.equals(this.events, other.events); + } + + public static final class Builder { + private SCVal returnValue; + private ContractEvent[] events; + + public Builder returnValue(SCVal returnValue) { + this.returnValue = returnValue; + return this; + } + + public Builder events(ContractEvent[] events) { + this.events = events; + return this; + } + + public InvokeHostFunctionSuccessPreImage build() { + InvokeHostFunctionSuccessPreImage val = new InvokeHostFunctionSuccessPreImage(); + val.setReturnValue(this.returnValue); + val.setEvents(this.events); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerBounds.java b/src/main/java/org/stellar/sdk/xdr/LedgerBounds.java index d3f6db404..a2e75d0fe 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerBounds.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerBounds.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -87,8 +89,8 @@ public Builder maxLedger(Uint32 maxLedger) { public LedgerBounds build() { LedgerBounds val = new LedgerBounds(); - val.setMinLedger(minLedger); - val.setMaxLedger(maxLedger); + val.setMinLedger(this.minLedger); + val.setMaxLedger(this.maxLedger); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerCloseMeta.java b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMeta.java index 9b91f5c03..63ef3ced1 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerCloseMeta.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMeta.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,6 +14,10 @@ // { // case 0: // LedgerCloseMetaV0 v0; +// case 1: +// LedgerCloseMetaV1 v1; +// case 2: +// LedgerCloseMetaV2 v2; // }; // =========================================================================== @@ -38,9 +44,31 @@ public void setV0(LedgerCloseMetaV0 value) { this.v0 = value; } + private LedgerCloseMetaV1 v1; + + public LedgerCloseMetaV1 getV1() { + return this.v1; + } + + public void setV1(LedgerCloseMetaV1 value) { + this.v1 = value; + } + + private LedgerCloseMetaV2 v2; + + public LedgerCloseMetaV2 getV2() { + return this.v2; + } + + public void setV2(LedgerCloseMetaV2 value) { + this.v2 = value; + } + public static final class Builder { private Integer discriminant; private LedgerCloseMetaV0 v0; + private LedgerCloseMetaV1 v1; + private LedgerCloseMetaV2 v2; public Builder discriminant(Integer discriminant) { this.discriminant = discriminant; @@ -52,10 +80,22 @@ public Builder v0(LedgerCloseMetaV0 v0) { return this; } + public Builder v1(LedgerCloseMetaV1 v1) { + this.v1 = v1; + return this; + } + + public Builder v2(LedgerCloseMetaV2 v2) { + this.v2 = v2; + return this; + } + public LedgerCloseMeta build() { LedgerCloseMeta val = new LedgerCloseMeta(); val.setDiscriminant(discriminant); - val.setV0(v0); + val.setV0(this.v0); + val.setV1(this.v1); + val.setV2(this.v2); return val; } } @@ -69,6 +109,12 @@ public static void encode(XdrDataOutputStream stream, LedgerCloseMeta encodedLed case 0: LedgerCloseMetaV0.encode(stream, encodedLedgerCloseMeta.v0); break; + case 1: + LedgerCloseMetaV1.encode(stream, encodedLedgerCloseMeta.v1); + break; + case 2: + LedgerCloseMetaV2.encode(stream, encodedLedgerCloseMeta.v2); + break; } } @@ -84,13 +130,19 @@ public static LedgerCloseMeta decode(XdrDataInputStream stream) throws IOExcepti case 0: decodedLedgerCloseMeta.v0 = LedgerCloseMetaV0.decode(stream); break; + case 1: + decodedLedgerCloseMeta.v1 = LedgerCloseMetaV1.decode(stream); + break; + case 2: + decodedLedgerCloseMeta.v2 = LedgerCloseMetaV2.decode(stream); + break; } return decodedLedgerCloseMeta; } @Override public int hashCode() { - return Objects.hashCode(this.v0, this.v); + return Objects.hashCode(this.v0, this.v1, this.v2, this.v); } @Override @@ -100,6 +152,9 @@ public boolean equals(Object object) { } LedgerCloseMeta other = (LedgerCloseMeta) object; - return Objects.equal(this.v0, other.v0) && Objects.equal(this.v, other.v); + return Objects.equal(this.v0, other.v0) + && Objects.equal(this.v1, other.v1) + && Objects.equal(this.v2, other.v2) + && Objects.equal(this.v, other.v); } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV0.java b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV0.java index 8d8a4b01d..4ddb87a9b 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV0.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV0.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -186,11 +188,11 @@ public Builder scpInfo(SCPHistoryEntry[] scpInfo) { public LedgerCloseMetaV0 build() { LedgerCloseMetaV0 val = new LedgerCloseMetaV0(); - val.setLedgerHeader(ledgerHeader); - val.setTxSet(txSet); - val.setTxProcessing(txProcessing); - val.setUpgradesProcessing(upgradesProcessing); - val.setScpInfo(scpInfo); + val.setLedgerHeader(this.ledgerHeader); + val.setTxSet(this.txSet); + val.setTxProcessing(this.txProcessing); + val.setUpgradesProcessing(this.upgradesProcessing); + val.setScpInfo(this.scpInfo); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV1.java b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV1.java new file mode 100644 index 000000000..7c286efef --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV1.java @@ -0,0 +1,199 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct LedgerCloseMetaV1 +// { +// LedgerHeaderHistoryEntry ledgerHeader; +// +// GeneralizedTransactionSet txSet; +// +// // NB: transactions are sorted in apply order here +// // fees for all transactions are processed first +// // followed by applying transactions +// TransactionResultMeta txProcessing<>; +// +// // upgrades are applied last +// UpgradeEntryMeta upgradesProcessing<>; +// +// // other misc information attached to the ledger close +// SCPHistoryEntry scpInfo<>; +// }; + +// =========================================================================== +public class LedgerCloseMetaV1 implements XdrElement { + public LedgerCloseMetaV1() {} + + private LedgerHeaderHistoryEntry ledgerHeader; + + public LedgerHeaderHistoryEntry getLedgerHeader() { + return this.ledgerHeader; + } + + public void setLedgerHeader(LedgerHeaderHistoryEntry value) { + this.ledgerHeader = value; + } + + private GeneralizedTransactionSet txSet; + + public GeneralizedTransactionSet getTxSet() { + return this.txSet; + } + + public void setTxSet(GeneralizedTransactionSet value) { + this.txSet = value; + } + + private TransactionResultMeta[] txProcessing; + + public TransactionResultMeta[] getTxProcessing() { + return this.txProcessing; + } + + public void setTxProcessing(TransactionResultMeta[] value) { + this.txProcessing = value; + } + + private UpgradeEntryMeta[] upgradesProcessing; + + public UpgradeEntryMeta[] getUpgradesProcessing() { + return this.upgradesProcessing; + } + + public void setUpgradesProcessing(UpgradeEntryMeta[] value) { + this.upgradesProcessing = value; + } + + private SCPHistoryEntry[] scpInfo; + + public SCPHistoryEntry[] getScpInfo() { + return this.scpInfo; + } + + public void setScpInfo(SCPHistoryEntry[] value) { + this.scpInfo = value; + } + + public static void encode(XdrDataOutputStream stream, LedgerCloseMetaV1 encodedLedgerCloseMetaV1) + throws IOException { + LedgerHeaderHistoryEntry.encode(stream, encodedLedgerCloseMetaV1.ledgerHeader); + GeneralizedTransactionSet.encode(stream, encodedLedgerCloseMetaV1.txSet); + int txProcessingsize = encodedLedgerCloseMetaV1.getTxProcessing().length; + stream.writeInt(txProcessingsize); + for (int i = 0; i < txProcessingsize; i++) { + TransactionResultMeta.encode(stream, encodedLedgerCloseMetaV1.txProcessing[i]); + } + int upgradesProcessingsize = encodedLedgerCloseMetaV1.getUpgradesProcessing().length; + stream.writeInt(upgradesProcessingsize); + for (int i = 0; i < upgradesProcessingsize; i++) { + UpgradeEntryMeta.encode(stream, encodedLedgerCloseMetaV1.upgradesProcessing[i]); + } + int scpInfosize = encodedLedgerCloseMetaV1.getScpInfo().length; + stream.writeInt(scpInfosize); + for (int i = 0; i < scpInfosize; i++) { + SCPHistoryEntry.encode(stream, encodedLedgerCloseMetaV1.scpInfo[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static LedgerCloseMetaV1 decode(XdrDataInputStream stream) throws IOException { + LedgerCloseMetaV1 decodedLedgerCloseMetaV1 = new LedgerCloseMetaV1(); + decodedLedgerCloseMetaV1.ledgerHeader = LedgerHeaderHistoryEntry.decode(stream); + decodedLedgerCloseMetaV1.txSet = GeneralizedTransactionSet.decode(stream); + int txProcessingsize = stream.readInt(); + decodedLedgerCloseMetaV1.txProcessing = new TransactionResultMeta[txProcessingsize]; + for (int i = 0; i < txProcessingsize; i++) { + decodedLedgerCloseMetaV1.txProcessing[i] = TransactionResultMeta.decode(stream); + } + int upgradesProcessingsize = stream.readInt(); + decodedLedgerCloseMetaV1.upgradesProcessing = new UpgradeEntryMeta[upgradesProcessingsize]; + for (int i = 0; i < upgradesProcessingsize; i++) { + decodedLedgerCloseMetaV1.upgradesProcessing[i] = UpgradeEntryMeta.decode(stream); + } + int scpInfosize = stream.readInt(); + decodedLedgerCloseMetaV1.scpInfo = new SCPHistoryEntry[scpInfosize]; + for (int i = 0; i < scpInfosize; i++) { + decodedLedgerCloseMetaV1.scpInfo[i] = SCPHistoryEntry.decode(stream); + } + return decodedLedgerCloseMetaV1; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.ledgerHeader, + this.txSet, + Arrays.hashCode(this.txProcessing), + Arrays.hashCode(this.upgradesProcessing), + Arrays.hashCode(this.scpInfo)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof LedgerCloseMetaV1)) { + return false; + } + + LedgerCloseMetaV1 other = (LedgerCloseMetaV1) object; + return Objects.equal(this.ledgerHeader, other.ledgerHeader) + && Objects.equal(this.txSet, other.txSet) + && Arrays.equals(this.txProcessing, other.txProcessing) + && Arrays.equals(this.upgradesProcessing, other.upgradesProcessing) + && Arrays.equals(this.scpInfo, other.scpInfo); + } + + public static final class Builder { + private LedgerHeaderHistoryEntry ledgerHeader; + private GeneralizedTransactionSet txSet; + private TransactionResultMeta[] txProcessing; + private UpgradeEntryMeta[] upgradesProcessing; + private SCPHistoryEntry[] scpInfo; + + public Builder ledgerHeader(LedgerHeaderHistoryEntry ledgerHeader) { + this.ledgerHeader = ledgerHeader; + return this; + } + + public Builder txSet(GeneralizedTransactionSet txSet) { + this.txSet = txSet; + return this; + } + + public Builder txProcessing(TransactionResultMeta[] txProcessing) { + this.txProcessing = txProcessing; + return this; + } + + public Builder upgradesProcessing(UpgradeEntryMeta[] upgradesProcessing) { + this.upgradesProcessing = upgradesProcessing; + return this; + } + + public Builder scpInfo(SCPHistoryEntry[] scpInfo) { + this.scpInfo = scpInfo; + return this; + } + + public LedgerCloseMetaV1 build() { + LedgerCloseMetaV1 val = new LedgerCloseMetaV1(); + val.setLedgerHeader(this.ledgerHeader); + val.setTxSet(this.txSet); + val.setTxProcessing(this.txProcessing); + val.setUpgradesProcessing(this.upgradesProcessing); + val.setScpInfo(this.scpInfo); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV2.java b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV2.java new file mode 100644 index 000000000..b056cb34c --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV2.java @@ -0,0 +1,318 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct LedgerCloseMetaV2 +// { +// // We forgot to add an ExtensionPoint in v1 but at least +// // we can add one now in v2. +// ExtensionPoint ext; +// +// LedgerHeaderHistoryEntry ledgerHeader; +// +// GeneralizedTransactionSet txSet; +// +// // NB: transactions are sorted in apply order here +// // fees for all transactions are processed first +// // followed by applying transactions +// TransactionResultMeta txProcessing<>; +// +// // upgrades are applied last +// UpgradeEntryMeta upgradesProcessing<>; +// +// // other misc information attached to the ledger close +// SCPHistoryEntry scpInfo<>; +// +// // Size in bytes of BucketList, to support downstream +// // systems calculating storage fees correctly. +// uint64 totalByteSizeOfBucketList; +// +// // Expired temp keys that are being evicted at this ledger. +// LedgerKey evictedTemporaryLedgerKeys<>; +// +// // Expired restorable ledger entries that are being +// // evicted at this ledger. +// LedgerEntry evictedPersistentLedgerEntries<>; +// }; + +// =========================================================================== +public class LedgerCloseMetaV2 implements XdrElement { + public LedgerCloseMetaV2() {} + + private ExtensionPoint ext; + + public ExtensionPoint getExt() { + return this.ext; + } + + public void setExt(ExtensionPoint value) { + this.ext = value; + } + + private LedgerHeaderHistoryEntry ledgerHeader; + + public LedgerHeaderHistoryEntry getLedgerHeader() { + return this.ledgerHeader; + } + + public void setLedgerHeader(LedgerHeaderHistoryEntry value) { + this.ledgerHeader = value; + } + + private GeneralizedTransactionSet txSet; + + public GeneralizedTransactionSet getTxSet() { + return this.txSet; + } + + public void setTxSet(GeneralizedTransactionSet value) { + this.txSet = value; + } + + private TransactionResultMeta[] txProcessing; + + public TransactionResultMeta[] getTxProcessing() { + return this.txProcessing; + } + + public void setTxProcessing(TransactionResultMeta[] value) { + this.txProcessing = value; + } + + private UpgradeEntryMeta[] upgradesProcessing; + + public UpgradeEntryMeta[] getUpgradesProcessing() { + return this.upgradesProcessing; + } + + public void setUpgradesProcessing(UpgradeEntryMeta[] value) { + this.upgradesProcessing = value; + } + + private SCPHistoryEntry[] scpInfo; + + public SCPHistoryEntry[] getScpInfo() { + return this.scpInfo; + } + + public void setScpInfo(SCPHistoryEntry[] value) { + this.scpInfo = value; + } + + private Uint64 totalByteSizeOfBucketList; + + public Uint64 getTotalByteSizeOfBucketList() { + return this.totalByteSizeOfBucketList; + } + + public void setTotalByteSizeOfBucketList(Uint64 value) { + this.totalByteSizeOfBucketList = value; + } + + private LedgerKey[] evictedTemporaryLedgerKeys; + + public LedgerKey[] getEvictedTemporaryLedgerKeys() { + return this.evictedTemporaryLedgerKeys; + } + + public void setEvictedTemporaryLedgerKeys(LedgerKey[] value) { + this.evictedTemporaryLedgerKeys = value; + } + + private LedgerEntry[] evictedPersistentLedgerEntries; + + public LedgerEntry[] getEvictedPersistentLedgerEntries() { + return this.evictedPersistentLedgerEntries; + } + + public void setEvictedPersistentLedgerEntries(LedgerEntry[] value) { + this.evictedPersistentLedgerEntries = value; + } + + public static void encode(XdrDataOutputStream stream, LedgerCloseMetaV2 encodedLedgerCloseMetaV2) + throws IOException { + ExtensionPoint.encode(stream, encodedLedgerCloseMetaV2.ext); + LedgerHeaderHistoryEntry.encode(stream, encodedLedgerCloseMetaV2.ledgerHeader); + GeneralizedTransactionSet.encode(stream, encodedLedgerCloseMetaV2.txSet); + int txProcessingsize = encodedLedgerCloseMetaV2.getTxProcessing().length; + stream.writeInt(txProcessingsize); + for (int i = 0; i < txProcessingsize; i++) { + TransactionResultMeta.encode(stream, encodedLedgerCloseMetaV2.txProcessing[i]); + } + int upgradesProcessingsize = encodedLedgerCloseMetaV2.getUpgradesProcessing().length; + stream.writeInt(upgradesProcessingsize); + for (int i = 0; i < upgradesProcessingsize; i++) { + UpgradeEntryMeta.encode(stream, encodedLedgerCloseMetaV2.upgradesProcessing[i]); + } + int scpInfosize = encodedLedgerCloseMetaV2.getScpInfo().length; + stream.writeInt(scpInfosize); + for (int i = 0; i < scpInfosize; i++) { + SCPHistoryEntry.encode(stream, encodedLedgerCloseMetaV2.scpInfo[i]); + } + Uint64.encode(stream, encodedLedgerCloseMetaV2.totalByteSizeOfBucketList); + int evictedTemporaryLedgerKeyssize = + encodedLedgerCloseMetaV2.getEvictedTemporaryLedgerKeys().length; + stream.writeInt(evictedTemporaryLedgerKeyssize); + for (int i = 0; i < evictedTemporaryLedgerKeyssize; i++) { + LedgerKey.encode(stream, encodedLedgerCloseMetaV2.evictedTemporaryLedgerKeys[i]); + } + int evictedPersistentLedgerEntriessize = + encodedLedgerCloseMetaV2.getEvictedPersistentLedgerEntries().length; + stream.writeInt(evictedPersistentLedgerEntriessize); + for (int i = 0; i < evictedPersistentLedgerEntriessize; i++) { + LedgerEntry.encode(stream, encodedLedgerCloseMetaV2.evictedPersistentLedgerEntries[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static LedgerCloseMetaV2 decode(XdrDataInputStream stream) throws IOException { + LedgerCloseMetaV2 decodedLedgerCloseMetaV2 = new LedgerCloseMetaV2(); + decodedLedgerCloseMetaV2.ext = ExtensionPoint.decode(stream); + decodedLedgerCloseMetaV2.ledgerHeader = LedgerHeaderHistoryEntry.decode(stream); + decodedLedgerCloseMetaV2.txSet = GeneralizedTransactionSet.decode(stream); + int txProcessingsize = stream.readInt(); + decodedLedgerCloseMetaV2.txProcessing = new TransactionResultMeta[txProcessingsize]; + for (int i = 0; i < txProcessingsize; i++) { + decodedLedgerCloseMetaV2.txProcessing[i] = TransactionResultMeta.decode(stream); + } + int upgradesProcessingsize = stream.readInt(); + decodedLedgerCloseMetaV2.upgradesProcessing = new UpgradeEntryMeta[upgradesProcessingsize]; + for (int i = 0; i < upgradesProcessingsize; i++) { + decodedLedgerCloseMetaV2.upgradesProcessing[i] = UpgradeEntryMeta.decode(stream); + } + int scpInfosize = stream.readInt(); + decodedLedgerCloseMetaV2.scpInfo = new SCPHistoryEntry[scpInfosize]; + for (int i = 0; i < scpInfosize; i++) { + decodedLedgerCloseMetaV2.scpInfo[i] = SCPHistoryEntry.decode(stream); + } + decodedLedgerCloseMetaV2.totalByteSizeOfBucketList = Uint64.decode(stream); + int evictedTemporaryLedgerKeyssize = stream.readInt(); + decodedLedgerCloseMetaV2.evictedTemporaryLedgerKeys = + new LedgerKey[evictedTemporaryLedgerKeyssize]; + for (int i = 0; i < evictedTemporaryLedgerKeyssize; i++) { + decodedLedgerCloseMetaV2.evictedTemporaryLedgerKeys[i] = LedgerKey.decode(stream); + } + int evictedPersistentLedgerEntriessize = stream.readInt(); + decodedLedgerCloseMetaV2.evictedPersistentLedgerEntries = + new LedgerEntry[evictedPersistentLedgerEntriessize]; + for (int i = 0; i < evictedPersistentLedgerEntriessize; i++) { + decodedLedgerCloseMetaV2.evictedPersistentLedgerEntries[i] = LedgerEntry.decode(stream); + } + return decodedLedgerCloseMetaV2; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.ext, + this.ledgerHeader, + this.txSet, + Arrays.hashCode(this.txProcessing), + Arrays.hashCode(this.upgradesProcessing), + Arrays.hashCode(this.scpInfo), + this.totalByteSizeOfBucketList, + Arrays.hashCode(this.evictedTemporaryLedgerKeys), + Arrays.hashCode(this.evictedPersistentLedgerEntries)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof LedgerCloseMetaV2)) { + return false; + } + + LedgerCloseMetaV2 other = (LedgerCloseMetaV2) object; + return Objects.equal(this.ext, other.ext) + && Objects.equal(this.ledgerHeader, other.ledgerHeader) + && Objects.equal(this.txSet, other.txSet) + && Arrays.equals(this.txProcessing, other.txProcessing) + && Arrays.equals(this.upgradesProcessing, other.upgradesProcessing) + && Arrays.equals(this.scpInfo, other.scpInfo) + && Objects.equal(this.totalByteSizeOfBucketList, other.totalByteSizeOfBucketList) + && Arrays.equals(this.evictedTemporaryLedgerKeys, other.evictedTemporaryLedgerKeys) + && Arrays.equals(this.evictedPersistentLedgerEntries, other.evictedPersistentLedgerEntries); + } + + public static final class Builder { + private ExtensionPoint ext; + private LedgerHeaderHistoryEntry ledgerHeader; + private GeneralizedTransactionSet txSet; + private TransactionResultMeta[] txProcessing; + private UpgradeEntryMeta[] upgradesProcessing; + private SCPHistoryEntry[] scpInfo; + private Uint64 totalByteSizeOfBucketList; + private LedgerKey[] evictedTemporaryLedgerKeys; + private LedgerEntry[] evictedPersistentLedgerEntries; + + public Builder ext(ExtensionPoint ext) { + this.ext = ext; + return this; + } + + public Builder ledgerHeader(LedgerHeaderHistoryEntry ledgerHeader) { + this.ledgerHeader = ledgerHeader; + return this; + } + + public Builder txSet(GeneralizedTransactionSet txSet) { + this.txSet = txSet; + return this; + } + + public Builder txProcessing(TransactionResultMeta[] txProcessing) { + this.txProcessing = txProcessing; + return this; + } + + public Builder upgradesProcessing(UpgradeEntryMeta[] upgradesProcessing) { + this.upgradesProcessing = upgradesProcessing; + return this; + } + + public Builder scpInfo(SCPHistoryEntry[] scpInfo) { + this.scpInfo = scpInfo; + return this; + } + + public Builder totalByteSizeOfBucketList(Uint64 totalByteSizeOfBucketList) { + this.totalByteSizeOfBucketList = totalByteSizeOfBucketList; + return this; + } + + public Builder evictedTemporaryLedgerKeys(LedgerKey[] evictedTemporaryLedgerKeys) { + this.evictedTemporaryLedgerKeys = evictedTemporaryLedgerKeys; + return this; + } + + public Builder evictedPersistentLedgerEntries(LedgerEntry[] evictedPersistentLedgerEntries) { + this.evictedPersistentLedgerEntries = evictedPersistentLedgerEntries; + return this; + } + + public LedgerCloseMetaV2 build() { + LedgerCloseMetaV2 val = new LedgerCloseMetaV2(); + val.setExt(this.ext); + val.setLedgerHeader(this.ledgerHeader); + val.setTxSet(this.txSet); + val.setTxProcessing(this.txProcessing); + val.setUpgradesProcessing(this.upgradesProcessing); + val.setScpInfo(this.scpInfo); + val.setTotalByteSizeOfBucketList(this.totalByteSizeOfBucketList); + val.setEvictedTemporaryLedgerKeys(this.evictedTemporaryLedgerKeys); + val.setEvictedPersistentLedgerEntries(this.evictedPersistentLedgerEntries); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerCloseValueSignature.java b/src/main/java/org/stellar/sdk/xdr/LedgerCloseValueSignature.java index 9e2f97eec..5d928167d 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerCloseValueSignature.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerCloseValueSignature.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -88,8 +90,8 @@ public Builder signature(Signature signature) { public LedgerCloseValueSignature build() { LedgerCloseValueSignature val = new LedgerCloseValueSignature(); - val.setNodeID(nodeID); - val.setSignature(signature); + val.setNodeID(this.nodeID); + val.setSignature(this.signature); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerEntry.java b/src/main/java/org/stellar/sdk/xdr/LedgerEntry.java index 9275dc1be..a12a5d356 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerEntry.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -26,6 +28,12 @@ // ClaimableBalanceEntry claimableBalance; // case LIQUIDITY_POOL: // LiquidityPoolEntry liquidityPool; +// case CONTRACT_DATA: +// ContractDataEntry contractData; +// case CONTRACT_CODE: +// ContractCodeEntry contractCode; +// case CONFIG_SETTING: +// ConfigSettingEntry configSetting; // } // data; // @@ -132,9 +140,9 @@ public Builder ext(LedgerEntryExt ext) { public LedgerEntry build() { LedgerEntry val = new LedgerEntry(); - val.setLastModifiedLedgerSeq(lastModifiedLedgerSeq); - val.setData(data); - val.setExt(ext); + val.setLastModifiedLedgerSeq(this.lastModifiedLedgerSeq); + val.setData(this.data); + val.setExt(this.ext); return val; } } @@ -212,6 +220,36 @@ public void setLiquidityPool(LiquidityPoolEntry value) { this.liquidityPool = value; } + private ContractDataEntry contractData; + + public ContractDataEntry getContractData() { + return this.contractData; + } + + public void setContractData(ContractDataEntry value) { + this.contractData = value; + } + + private ContractCodeEntry contractCode; + + public ContractCodeEntry getContractCode() { + return this.contractCode; + } + + public void setContractCode(ContractCodeEntry value) { + this.contractCode = value; + } + + private ConfigSettingEntry configSetting; + + public ConfigSettingEntry getConfigSetting() { + return this.configSetting; + } + + public void setConfigSetting(ConfigSettingEntry value) { + this.configSetting = value; + } + public static final class Builder { private LedgerEntryType discriminant; private AccountEntry account; @@ -220,6 +258,9 @@ public static final class Builder { private DataEntry data; private ClaimableBalanceEntry claimableBalance; private LiquidityPoolEntry liquidityPool; + private ContractDataEntry contractData; + private ContractCodeEntry contractCode; + private ConfigSettingEntry configSetting; public Builder discriminant(LedgerEntryType discriminant) { this.discriminant = discriminant; @@ -256,15 +297,33 @@ public Builder liquidityPool(LiquidityPoolEntry liquidityPool) { return this; } + public Builder contractData(ContractDataEntry contractData) { + this.contractData = contractData; + return this; + } + + public Builder contractCode(ContractCodeEntry contractCode) { + this.contractCode = contractCode; + return this; + } + + public Builder configSetting(ConfigSettingEntry configSetting) { + this.configSetting = configSetting; + return this; + } + public LedgerEntryData build() { LedgerEntryData val = new LedgerEntryData(); val.setDiscriminant(discriminant); - val.setAccount(account); - val.setTrustLine(trustLine); - val.setOffer(offer); - val.setData(data); - val.setClaimableBalance(claimableBalance); - val.setLiquidityPool(liquidityPool); + val.setAccount(this.account); + val.setTrustLine(this.trustLine); + val.setOffer(this.offer); + val.setData(this.data); + val.setClaimableBalance(this.claimableBalance); + val.setLiquidityPool(this.liquidityPool); + val.setContractData(this.contractData); + val.setContractCode(this.contractCode); + val.setConfigSetting(this.configSetting); return val; } } @@ -293,6 +352,15 @@ public static void encode(XdrDataOutputStream stream, LedgerEntryData encodedLed case LIQUIDITY_POOL: LiquidityPoolEntry.encode(stream, encodedLedgerEntryData.liquidityPool); break; + case CONTRACT_DATA: + ContractDataEntry.encode(stream, encodedLedgerEntryData.contractData); + break; + case CONTRACT_CODE: + ContractCodeEntry.encode(stream, encodedLedgerEntryData.contractCode); + break; + case CONFIG_SETTING: + ConfigSettingEntry.encode(stream, encodedLedgerEntryData.configSetting); + break; } } @@ -323,6 +391,15 @@ public static LedgerEntryData decode(XdrDataInputStream stream) throws IOExcepti case LIQUIDITY_POOL: decodedLedgerEntryData.liquidityPool = LiquidityPoolEntry.decode(stream); break; + case CONTRACT_DATA: + decodedLedgerEntryData.contractData = ContractDataEntry.decode(stream); + break; + case CONTRACT_CODE: + decodedLedgerEntryData.contractCode = ContractCodeEntry.decode(stream); + break; + case CONFIG_SETTING: + decodedLedgerEntryData.configSetting = ConfigSettingEntry.decode(stream); + break; } return decodedLedgerEntryData; } @@ -336,6 +413,9 @@ public int hashCode() { this.data, this.claimableBalance, this.liquidityPool, + this.contractData, + this.contractCode, + this.configSetting, this.type); } @@ -352,6 +432,9 @@ public boolean equals(Object object) { && Objects.equal(this.data, other.data) && Objects.equal(this.claimableBalance, other.claimableBalance) && Objects.equal(this.liquidityPool, other.liquidityPool) + && Objects.equal(this.contractData, other.contractData) + && Objects.equal(this.contractCode, other.contractCode) + && Objects.equal(this.configSetting, other.configSetting) && Objects.equal(this.type, other.type); } } @@ -396,7 +479,7 @@ public Builder v1(LedgerEntryExtensionV1 v1) { public LedgerEntryExt build() { LedgerEntryExt val = new LedgerEntryExt(); val.setDiscriminant(discriminant); - val.setV1(v1); + val.setV1(this.v1); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerEntryChange.java b/src/main/java/org/stellar/sdk/xdr/LedgerEntryChange.java index 66c54ee79..0893e8f8c 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerEntryChange.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerEntryChange.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -109,10 +111,10 @@ public Builder state(LedgerEntry state) { public LedgerEntryChange build() { LedgerEntryChange val = new LedgerEntryChange(); val.setDiscriminant(discriminant); - val.setCreated(created); - val.setUpdated(updated); - val.setRemoved(removed); - val.setState(state); + val.setCreated(this.created); + val.setUpdated(this.updated); + val.setRemoved(this.removed); + val.setState(this.state); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerEntryChangeType.java b/src/main/java/org/stellar/sdk/xdr/LedgerEntryChangeType.java index 4d7115831..262e2b569 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerEntryChangeType.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerEntryChangeType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerEntryChanges.java b/src/main/java/org/stellar/sdk/xdr/LedgerEntryChanges.java index 46caf3df9..4f25eaedb 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerEntryChanges.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerEntryChanges.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerEntryExtensionV1.java b/src/main/java/org/stellar/sdk/xdr/LedgerEntryExtensionV1.java index 8df4d5f3c..018739ddf 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerEntryExtensionV1.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerEntryExtensionV1.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -94,8 +96,8 @@ public Builder ext(LedgerEntryExtensionV1Ext ext) { public LedgerEntryExtensionV1 build() { LedgerEntryExtensionV1 val = new LedgerEntryExtensionV1(); - val.setSponsoringID(sponsoringID); - val.setExt(ext); + val.setSponsoringID(this.sponsoringID); + val.setExt(this.ext); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerEntryType.java b/src/main/java/org/stellar/sdk/xdr/LedgerEntryType.java index d7091fcc4..2fc3d2e93 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerEntryType.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerEntryType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ @@ -14,7 +16,10 @@ // OFFER = 2, // DATA = 3, // CLAIMABLE_BALANCE = 4, -// LIQUIDITY_POOL = 5 +// LIQUIDITY_POOL = 5, +// CONTRACT_DATA = 6, +// CONTRACT_CODE = 7, +// CONFIG_SETTING = 8 // }; // =========================================================================== @@ -25,6 +30,9 @@ public enum LedgerEntryType implements XdrElement { DATA(3), CLAIMABLE_BALANCE(4), LIQUIDITY_POOL(5), + CONTRACT_DATA(6), + CONTRACT_CODE(7), + CONFIG_SETTING(8), ; private int mValue; @@ -51,6 +59,12 @@ public static LedgerEntryType decode(XdrDataInputStream stream) throws IOExcepti return CLAIMABLE_BALANCE; case 5: return LIQUIDITY_POOL; + case 6: + return CONTRACT_DATA; + case 7: + return CONTRACT_CODE; + case 8: + return CONFIG_SETTING; default: throw new RuntimeException("Unknown enum value: " + value); } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerFootprint.java b/src/main/java/org/stellar/sdk/xdr/LedgerFootprint.java new file mode 100644 index 000000000..bc17b02a0 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/LedgerFootprint.java @@ -0,0 +1,114 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct LedgerFootprint +// { +// LedgerKey readOnly<>; +// LedgerKey readWrite<>; +// }; + +// =========================================================================== +public class LedgerFootprint implements XdrElement { + public LedgerFootprint() {} + + private LedgerKey[] readOnly; + + public LedgerKey[] getReadOnly() { + return this.readOnly; + } + + public void setReadOnly(LedgerKey[] value) { + this.readOnly = value; + } + + private LedgerKey[] readWrite; + + public LedgerKey[] getReadWrite() { + return this.readWrite; + } + + public void setReadWrite(LedgerKey[] value) { + this.readWrite = value; + } + + public static void encode(XdrDataOutputStream stream, LedgerFootprint encodedLedgerFootprint) + throws IOException { + int readOnlysize = encodedLedgerFootprint.getReadOnly().length; + stream.writeInt(readOnlysize); + for (int i = 0; i < readOnlysize; i++) { + LedgerKey.encode(stream, encodedLedgerFootprint.readOnly[i]); + } + int readWritesize = encodedLedgerFootprint.getReadWrite().length; + stream.writeInt(readWritesize); + for (int i = 0; i < readWritesize; i++) { + LedgerKey.encode(stream, encodedLedgerFootprint.readWrite[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static LedgerFootprint decode(XdrDataInputStream stream) throws IOException { + LedgerFootprint decodedLedgerFootprint = new LedgerFootprint(); + int readOnlysize = stream.readInt(); + decodedLedgerFootprint.readOnly = new LedgerKey[readOnlysize]; + for (int i = 0; i < readOnlysize; i++) { + decodedLedgerFootprint.readOnly[i] = LedgerKey.decode(stream); + } + int readWritesize = stream.readInt(); + decodedLedgerFootprint.readWrite = new LedgerKey[readWritesize]; + for (int i = 0; i < readWritesize; i++) { + decodedLedgerFootprint.readWrite[i] = LedgerKey.decode(stream); + } + return decodedLedgerFootprint; + } + + @Override + public int hashCode() { + return Objects.hashCode(Arrays.hashCode(this.readOnly), Arrays.hashCode(this.readWrite)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof LedgerFootprint)) { + return false; + } + + LedgerFootprint other = (LedgerFootprint) object; + return Arrays.equals(this.readOnly, other.readOnly) + && Arrays.equals(this.readWrite, other.readWrite); + } + + public static final class Builder { + private LedgerKey[] readOnly; + private LedgerKey[] readWrite; + + public Builder readOnly(LedgerKey[] readOnly) { + this.readOnly = readOnly; + return this; + } + + public Builder readWrite(LedgerKey[] readWrite) { + this.readWrite = readWrite; + return this; + } + + public LedgerFootprint build() { + LedgerFootprint val = new LedgerFootprint(); + val.setReadOnly(this.readOnly); + val.setReadWrite(this.readWrite); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerHeader.java b/src/main/java/org/stellar/sdk/xdr/LedgerHeader.java index ddddbfcd1..1993ba949 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerHeader.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerHeader.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -391,21 +393,21 @@ public Builder ext(LedgerHeaderExt ext) { public LedgerHeader build() { LedgerHeader val = new LedgerHeader(); - val.setLedgerVersion(ledgerVersion); - val.setPreviousLedgerHash(previousLedgerHash); - val.setScpValue(scpValue); - val.setTxSetResultHash(txSetResultHash); - val.setBucketListHash(bucketListHash); - val.setLedgerSeq(ledgerSeq); - val.setTotalCoins(totalCoins); - val.setFeePool(feePool); - val.setInflationSeq(inflationSeq); - val.setIdPool(idPool); - val.setBaseFee(baseFee); - val.setBaseReserve(baseReserve); - val.setMaxTxSetSize(maxTxSetSize); - val.setSkipList(skipList); - val.setExt(ext); + val.setLedgerVersion(this.ledgerVersion); + val.setPreviousLedgerHash(this.previousLedgerHash); + val.setScpValue(this.scpValue); + val.setTxSetResultHash(this.txSetResultHash); + val.setBucketListHash(this.bucketListHash); + val.setLedgerSeq(this.ledgerSeq); + val.setTotalCoins(this.totalCoins); + val.setFeePool(this.feePool); + val.setInflationSeq(this.inflationSeq); + val.setIdPool(this.idPool); + val.setBaseFee(this.baseFee); + val.setBaseReserve(this.baseReserve); + val.setMaxTxSetSize(this.maxTxSetSize); + val.setSkipList(this.skipList); + val.setExt(this.ext); return val; } } @@ -450,7 +452,7 @@ public Builder v1(LedgerHeaderExtensionV1 v1) { public LedgerHeaderExt build() { LedgerHeaderExt val = new LedgerHeaderExt(); val.setDiscriminant(discriminant); - val.setV1(v1); + val.setV1(this.v1); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerHeaderExtensionV1.java b/src/main/java/org/stellar/sdk/xdr/LedgerHeaderExtensionV1.java index 014514be5..dd8750822 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerHeaderExtensionV1.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerHeaderExtensionV1.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -93,8 +95,8 @@ public Builder ext(LedgerHeaderExtensionV1Ext ext) { public LedgerHeaderExtensionV1 build() { LedgerHeaderExtensionV1 val = new LedgerHeaderExtensionV1(); - val.setFlags(flags); - val.setExt(ext); + val.setFlags(this.flags); + val.setExt(this.ext); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerHeaderFlags.java b/src/main/java/org/stellar/sdk/xdr/LedgerHeaderFlags.java index bf9166fb0..6f459b35f 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerHeaderFlags.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerHeaderFlags.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ @@ -11,7 +13,11 @@ // { // DISABLE_LIQUIDITY_POOL_TRADING_FLAG = 0x1, // DISABLE_LIQUIDITY_POOL_DEPOSIT_FLAG = 0x2, -// DISABLE_LIQUIDITY_POOL_WITHDRAWAL_FLAG = 0x4 +// DISABLE_LIQUIDITY_POOL_WITHDRAWAL_FLAG = 0x4, +// DISABLE_CONTRACT_CREATE = 0x8, +// DISABLE_CONTRACT_UPDATE = 0x10, +// DISABLE_CONTRACT_REMOVE = 0x20, +// DISABLE_CONTRACT_INVOKE = 0x40 // }; // =========================================================================== @@ -19,6 +25,10 @@ public enum LedgerHeaderFlags implements XdrElement { DISABLE_LIQUIDITY_POOL_TRADING_FLAG(1), DISABLE_LIQUIDITY_POOL_DEPOSIT_FLAG(2), DISABLE_LIQUIDITY_POOL_WITHDRAWAL_FLAG(4), + DISABLE_CONTRACT_CREATE(8), + DISABLE_CONTRACT_UPDATE(16), + DISABLE_CONTRACT_REMOVE(32), + DISABLE_CONTRACT_INVOKE(64), ; private int mValue; @@ -39,6 +49,14 @@ public static LedgerHeaderFlags decode(XdrDataInputStream stream) throws IOExcep return DISABLE_LIQUIDITY_POOL_DEPOSIT_FLAG; case 4: return DISABLE_LIQUIDITY_POOL_WITHDRAWAL_FLAG; + case 8: + return DISABLE_CONTRACT_CREATE; + case 16: + return DISABLE_CONTRACT_UPDATE; + case 32: + return DISABLE_CONTRACT_REMOVE; + case 64: + return DISABLE_CONTRACT_INVOKE; default: throw new RuntimeException("Unknown enum value: " + value); } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerHeaderHistoryEntry.java b/src/main/java/org/stellar/sdk/xdr/LedgerHeaderHistoryEntry.java index 032a30376..e37f25504 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerHeaderHistoryEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerHeaderHistoryEntry.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -115,9 +117,9 @@ public Builder ext(LedgerHeaderHistoryEntryExt ext) { public LedgerHeaderHistoryEntry build() { LedgerHeaderHistoryEntry val = new LedgerHeaderHistoryEntry(); - val.setHash(hash); - val.setHeader(header); - val.setExt(ext); + val.setHash(this.hash); + val.setHeader(this.header); + val.setExt(this.ext); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerKey.java b/src/main/java/org/stellar/sdk/xdr/LedgerKey.java index 54e9779e3..5b2ca4aca 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerKey.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerKey.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -48,6 +50,25 @@ // { // PoolID liquidityPoolID; // } liquidityPool; +// case CONTRACT_DATA: +// struct +// { +// SCAddress contract; +// SCVal key; +// ContractDataDurability durability; +// ContractEntryBodyType bodyType; +// } contractData; +// case CONTRACT_CODE: +// struct +// { +// Hash hash; +// ContractEntryBodyType bodyType; +// } contractCode; +// case CONFIG_SETTING: +// struct +// { +// ConfigSettingID configSettingID; +// } configSetting; // }; // =========================================================================== @@ -124,6 +145,36 @@ public void setLiquidityPool(LedgerKeyLiquidityPool value) { this.liquidityPool = value; } + private LedgerKeyContractData contractData; + + public LedgerKeyContractData getContractData() { + return this.contractData; + } + + public void setContractData(LedgerKeyContractData value) { + this.contractData = value; + } + + private LedgerKeyContractCode contractCode; + + public LedgerKeyContractCode getContractCode() { + return this.contractCode; + } + + public void setContractCode(LedgerKeyContractCode value) { + this.contractCode = value; + } + + private LedgerKeyConfigSetting configSetting; + + public LedgerKeyConfigSetting getConfigSetting() { + return this.configSetting; + } + + public void setConfigSetting(LedgerKeyConfigSetting value) { + this.configSetting = value; + } + public static final class Builder { private LedgerEntryType discriminant; private LedgerKeyAccount account; @@ -132,6 +183,9 @@ public static final class Builder { private LedgerKeyData data; private LedgerKeyClaimableBalance claimableBalance; private LedgerKeyLiquidityPool liquidityPool; + private LedgerKeyContractData contractData; + private LedgerKeyContractCode contractCode; + private LedgerKeyConfigSetting configSetting; public Builder discriminant(LedgerEntryType discriminant) { this.discriminant = discriminant; @@ -168,15 +222,33 @@ public Builder liquidityPool(LedgerKeyLiquidityPool liquidityPool) { return this; } + public Builder contractData(LedgerKeyContractData contractData) { + this.contractData = contractData; + return this; + } + + public Builder contractCode(LedgerKeyContractCode contractCode) { + this.contractCode = contractCode; + return this; + } + + public Builder configSetting(LedgerKeyConfigSetting configSetting) { + this.configSetting = configSetting; + return this; + } + public LedgerKey build() { LedgerKey val = new LedgerKey(); val.setDiscriminant(discriminant); - val.setAccount(account); - val.setTrustLine(trustLine); - val.setOffer(offer); - val.setData(data); - val.setClaimableBalance(claimableBalance); - val.setLiquidityPool(liquidityPool); + val.setAccount(this.account); + val.setTrustLine(this.trustLine); + val.setOffer(this.offer); + val.setData(this.data); + val.setClaimableBalance(this.claimableBalance); + val.setLiquidityPool(this.liquidityPool); + val.setContractData(this.contractData); + val.setContractCode(this.contractCode); + val.setConfigSetting(this.configSetting); return val; } } @@ -205,6 +277,15 @@ public static void encode(XdrDataOutputStream stream, LedgerKey encodedLedgerKey case LIQUIDITY_POOL: LedgerKeyLiquidityPool.encode(stream, encodedLedgerKey.liquidityPool); break; + case CONTRACT_DATA: + LedgerKeyContractData.encode(stream, encodedLedgerKey.contractData); + break; + case CONTRACT_CODE: + LedgerKeyContractCode.encode(stream, encodedLedgerKey.contractCode); + break; + case CONFIG_SETTING: + LedgerKeyConfigSetting.encode(stream, encodedLedgerKey.configSetting); + break; } } @@ -235,6 +316,15 @@ public static LedgerKey decode(XdrDataInputStream stream) throws IOException { case LIQUIDITY_POOL: decodedLedgerKey.liquidityPool = LedgerKeyLiquidityPool.decode(stream); break; + case CONTRACT_DATA: + decodedLedgerKey.contractData = LedgerKeyContractData.decode(stream); + break; + case CONTRACT_CODE: + decodedLedgerKey.contractCode = LedgerKeyContractCode.decode(stream); + break; + case CONFIG_SETTING: + decodedLedgerKey.configSetting = LedgerKeyConfigSetting.decode(stream); + break; } return decodedLedgerKey; } @@ -248,6 +338,9 @@ public int hashCode() { this.data, this.claimableBalance, this.liquidityPool, + this.contractData, + this.contractCode, + this.configSetting, this.type); } @@ -264,6 +357,9 @@ public boolean equals(Object object) { && Objects.equal(this.data, other.data) && Objects.equal(this.claimableBalance, other.claimableBalance) && Objects.equal(this.liquidityPool, other.liquidityPool) + && Objects.equal(this.contractData, other.contractData) + && Objects.equal(this.contractCode, other.contractCode) + && Objects.equal(this.configSetting, other.configSetting) && Objects.equal(this.type, other.type); } @@ -320,7 +416,7 @@ public Builder accountID(AccountID accountID) { public LedgerKeyAccount build() { LedgerKeyAccount val = new LedgerKeyAccount(); - val.setAccountID(accountID); + val.setAccountID(this.accountID); return val; } } @@ -399,8 +495,8 @@ public Builder asset(TrustLineAsset asset) { public LedgerKeyTrustLine build() { LedgerKeyTrustLine val = new LedgerKeyTrustLine(); - val.setAccountID(accountID); - val.setAsset(asset); + val.setAccountID(this.accountID); + val.setAsset(this.asset); return val; } } @@ -478,8 +574,8 @@ public Builder offerID(Int64 offerID) { public LedgerKeyOffer build() { LedgerKeyOffer val = new LedgerKeyOffer(); - val.setSellerID(sellerID); - val.setOfferID(offerID); + val.setSellerID(this.sellerID); + val.setOfferID(this.offerID); return val; } } @@ -557,8 +653,8 @@ public Builder dataName(String64 dataName) { public LedgerKeyData build() { LedgerKeyData val = new LedgerKeyData(); - val.setAccountID(accountID); - val.setDataName(dataName); + val.setAccountID(this.accountID); + val.setDataName(this.dataName); return val; } } @@ -618,7 +714,7 @@ public Builder balanceID(ClaimableBalanceID balanceID) { public LedgerKeyClaimableBalance build() { LedgerKeyClaimableBalance val = new LedgerKeyClaimableBalance(); - val.setBalanceID(balanceID); + val.setBalanceID(this.balanceID); return val; } } @@ -678,7 +774,266 @@ public Builder liquidityPoolID(PoolID liquidityPoolID) { public LedgerKeyLiquidityPool build() { LedgerKeyLiquidityPool val = new LedgerKeyLiquidityPool(); - val.setLiquidityPoolID(liquidityPoolID); + val.setLiquidityPoolID(this.liquidityPoolID); + return val; + } + } + } + + public static class LedgerKeyContractData { + public LedgerKeyContractData() {} + + private SCAddress contract; + + public SCAddress getContract() { + return this.contract; + } + + public void setContract(SCAddress value) { + this.contract = value; + } + + private SCVal key; + + public SCVal getKey() { + return this.key; + } + + public void setKey(SCVal value) { + this.key = value; + } + + private ContractDataDurability durability; + + public ContractDataDurability getDurability() { + return this.durability; + } + + public void setDurability(ContractDataDurability value) { + this.durability = value; + } + + private ContractEntryBodyType bodyType; + + public ContractEntryBodyType getBodyType() { + return this.bodyType; + } + + public void setBodyType(ContractEntryBodyType value) { + this.bodyType = value; + } + + public static void encode( + XdrDataOutputStream stream, LedgerKeyContractData encodedLedgerKeyContractData) + throws IOException { + SCAddress.encode(stream, encodedLedgerKeyContractData.contract); + SCVal.encode(stream, encodedLedgerKeyContractData.key); + ContractDataDurability.encode(stream, encodedLedgerKeyContractData.durability); + ContractEntryBodyType.encode(stream, encodedLedgerKeyContractData.bodyType); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static LedgerKeyContractData decode(XdrDataInputStream stream) throws IOException { + LedgerKeyContractData decodedLedgerKeyContractData = new LedgerKeyContractData(); + decodedLedgerKeyContractData.contract = SCAddress.decode(stream); + decodedLedgerKeyContractData.key = SCVal.decode(stream); + decodedLedgerKeyContractData.durability = ContractDataDurability.decode(stream); + decodedLedgerKeyContractData.bodyType = ContractEntryBodyType.decode(stream); + return decodedLedgerKeyContractData; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.contract, this.key, this.durability, this.bodyType); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof LedgerKeyContractData)) { + return false; + } + + LedgerKeyContractData other = (LedgerKeyContractData) object; + return Objects.equal(this.contract, other.contract) + && Objects.equal(this.key, other.key) + && Objects.equal(this.durability, other.durability) + && Objects.equal(this.bodyType, other.bodyType); + } + + public static final class Builder { + private SCAddress contract; + private SCVal key; + private ContractDataDurability durability; + private ContractEntryBodyType bodyType; + + public Builder contract(SCAddress contract) { + this.contract = contract; + return this; + } + + public Builder key(SCVal key) { + this.key = key; + return this; + } + + public Builder durability(ContractDataDurability durability) { + this.durability = durability; + return this; + } + + public Builder bodyType(ContractEntryBodyType bodyType) { + this.bodyType = bodyType; + return this; + } + + public LedgerKeyContractData build() { + LedgerKeyContractData val = new LedgerKeyContractData(); + val.setContract(this.contract); + val.setKey(this.key); + val.setDurability(this.durability); + val.setBodyType(this.bodyType); + return val; + } + } + } + + public static class LedgerKeyContractCode { + public LedgerKeyContractCode() {} + + private Hash hash; + + public Hash getHash() { + return this.hash; + } + + public void setHash(Hash value) { + this.hash = value; + } + + private ContractEntryBodyType bodyType; + + public ContractEntryBodyType getBodyType() { + return this.bodyType; + } + + public void setBodyType(ContractEntryBodyType value) { + this.bodyType = value; + } + + public static void encode( + XdrDataOutputStream stream, LedgerKeyContractCode encodedLedgerKeyContractCode) + throws IOException { + Hash.encode(stream, encodedLedgerKeyContractCode.hash); + ContractEntryBodyType.encode(stream, encodedLedgerKeyContractCode.bodyType); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static LedgerKeyContractCode decode(XdrDataInputStream stream) throws IOException { + LedgerKeyContractCode decodedLedgerKeyContractCode = new LedgerKeyContractCode(); + decodedLedgerKeyContractCode.hash = Hash.decode(stream); + decodedLedgerKeyContractCode.bodyType = ContractEntryBodyType.decode(stream); + return decodedLedgerKeyContractCode; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.hash, this.bodyType); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof LedgerKeyContractCode)) { + return false; + } + + LedgerKeyContractCode other = (LedgerKeyContractCode) object; + return Objects.equal(this.hash, other.hash) && Objects.equal(this.bodyType, other.bodyType); + } + + public static final class Builder { + private Hash hash; + private ContractEntryBodyType bodyType; + + public Builder hash(Hash hash) { + this.hash = hash; + return this; + } + + public Builder bodyType(ContractEntryBodyType bodyType) { + this.bodyType = bodyType; + return this; + } + + public LedgerKeyContractCode build() { + LedgerKeyContractCode val = new LedgerKeyContractCode(); + val.setHash(this.hash); + val.setBodyType(this.bodyType); + return val; + } + } + } + + public static class LedgerKeyConfigSetting { + public LedgerKeyConfigSetting() {} + + private ConfigSettingID configSettingID; + + public ConfigSettingID getConfigSettingID() { + return this.configSettingID; + } + + public void setConfigSettingID(ConfigSettingID value) { + this.configSettingID = value; + } + + public static void encode( + XdrDataOutputStream stream, LedgerKeyConfigSetting encodedLedgerKeyConfigSetting) + throws IOException { + ConfigSettingID.encode(stream, encodedLedgerKeyConfigSetting.configSettingID); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static LedgerKeyConfigSetting decode(XdrDataInputStream stream) throws IOException { + LedgerKeyConfigSetting decodedLedgerKeyConfigSetting = new LedgerKeyConfigSetting(); + decodedLedgerKeyConfigSetting.configSettingID = ConfigSettingID.decode(stream); + return decodedLedgerKeyConfigSetting; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.configSettingID); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof LedgerKeyConfigSetting)) { + return false; + } + + LedgerKeyConfigSetting other = (LedgerKeyConfigSetting) object; + return Objects.equal(this.configSettingID, other.configSettingID); + } + + public static final class Builder { + private ConfigSettingID configSettingID; + + public Builder configSettingID(ConfigSettingID configSettingID) { + this.configSettingID = configSettingID; + return this; + } + + public LedgerKeyConfigSetting build() { + LedgerKeyConfigSetting val = new LedgerKeyConfigSetting(); + val.setConfigSettingID(this.configSettingID); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerSCPMessages.java b/src/main/java/org/stellar/sdk/xdr/LedgerSCPMessages.java index ad0770d59..4a99ba955 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerSCPMessages.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerSCPMessages.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -96,8 +98,8 @@ public Builder messages(SCPEnvelope[] messages) { public LedgerSCPMessages build() { LedgerSCPMessages val = new LedgerSCPMessages(); - val.setLedgerSeq(ledgerSeq); - val.setMessages(messages); + val.setLedgerSeq(this.ledgerSeq); + val.setMessages(this.messages); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerUpgrade.java b/src/main/java/org/stellar/sdk/xdr/LedgerUpgrade.java index 595e40e86..72ae50ad8 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerUpgrade.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerUpgrade.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -20,6 +22,8 @@ // uint32 newBaseReserve; // update baseReserve // case LEDGER_UPGRADE_FLAGS: // uint32 newFlags; // update flags +// case LEDGER_UPGRADE_CONFIG: +// ConfigUpgradeSetKey newConfig; // }; // =========================================================================== @@ -86,6 +90,16 @@ public void setNewFlags(Uint32 value) { this.newFlags = value; } + private ConfigUpgradeSetKey newConfig; + + public ConfigUpgradeSetKey getNewConfig() { + return this.newConfig; + } + + public void setNewConfig(ConfigUpgradeSetKey value) { + this.newConfig = value; + } + public static final class Builder { private LedgerUpgradeType discriminant; private Uint32 newLedgerVersion; @@ -93,6 +107,7 @@ public static final class Builder { private Uint32 newMaxTxSetSize; private Uint32 newBaseReserve; private Uint32 newFlags; + private ConfigUpgradeSetKey newConfig; public Builder discriminant(LedgerUpgradeType discriminant) { this.discriminant = discriminant; @@ -124,14 +139,20 @@ public Builder newFlags(Uint32 newFlags) { return this; } + public Builder newConfig(ConfigUpgradeSetKey newConfig) { + this.newConfig = newConfig; + return this; + } + public LedgerUpgrade build() { LedgerUpgrade val = new LedgerUpgrade(); val.setDiscriminant(discriminant); - val.setNewLedgerVersion(newLedgerVersion); - val.setNewBaseFee(newBaseFee); - val.setNewMaxTxSetSize(newMaxTxSetSize); - val.setNewBaseReserve(newBaseReserve); - val.setNewFlags(newFlags); + val.setNewLedgerVersion(this.newLedgerVersion); + val.setNewBaseFee(this.newBaseFee); + val.setNewMaxTxSetSize(this.newMaxTxSetSize); + val.setNewBaseReserve(this.newBaseReserve); + val.setNewFlags(this.newFlags); + val.setNewConfig(this.newConfig); return val; } } @@ -157,6 +178,9 @@ public static void encode(XdrDataOutputStream stream, LedgerUpgrade encodedLedge case LEDGER_UPGRADE_FLAGS: Uint32.encode(stream, encodedLedgerUpgrade.newFlags); break; + case LEDGER_UPGRADE_CONFIG: + ConfigUpgradeSetKey.encode(stream, encodedLedgerUpgrade.newConfig); + break; } } @@ -184,6 +208,9 @@ public static LedgerUpgrade decode(XdrDataInputStream stream) throws IOException case LEDGER_UPGRADE_FLAGS: decodedLedgerUpgrade.newFlags = Uint32.decode(stream); break; + case LEDGER_UPGRADE_CONFIG: + decodedLedgerUpgrade.newConfig = ConfigUpgradeSetKey.decode(stream); + break; } return decodedLedgerUpgrade; } @@ -196,6 +223,7 @@ public int hashCode() { this.newMaxTxSetSize, this.newBaseReserve, this.newFlags, + this.newConfig, this.type); } @@ -211,6 +239,7 @@ public boolean equals(Object object) { && Objects.equal(this.newMaxTxSetSize, other.newMaxTxSetSize) && Objects.equal(this.newBaseReserve, other.newBaseReserve) && Objects.equal(this.newFlags, other.newFlags) + && Objects.equal(this.newConfig, other.newConfig) && Objects.equal(this.type, other.type); } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerUpgradeType.java b/src/main/java/org/stellar/sdk/xdr/LedgerUpgradeType.java index 79663279f..d728ec31f 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerUpgradeType.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerUpgradeType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ @@ -13,7 +15,8 @@ // LEDGER_UPGRADE_BASE_FEE = 2, // LEDGER_UPGRADE_MAX_TX_SET_SIZE = 3, // LEDGER_UPGRADE_BASE_RESERVE = 4, -// LEDGER_UPGRADE_FLAGS = 5 +// LEDGER_UPGRADE_FLAGS = 5, +// LEDGER_UPGRADE_CONFIG = 6 // }; // =========================================================================== @@ -23,6 +26,7 @@ public enum LedgerUpgradeType implements XdrElement { LEDGER_UPGRADE_MAX_TX_SET_SIZE(3), LEDGER_UPGRADE_BASE_RESERVE(4), LEDGER_UPGRADE_FLAGS(5), + LEDGER_UPGRADE_CONFIG(6), ; private int mValue; @@ -47,6 +51,8 @@ public static LedgerUpgradeType decode(XdrDataInputStream stream) throws IOExcep return LEDGER_UPGRADE_BASE_RESERVE; case 5: return LEDGER_UPGRADE_FLAGS; + case 6: + return LEDGER_UPGRADE_CONFIG; default: throw new RuntimeException("Unknown enum value: " + value); } diff --git a/src/main/java/org/stellar/sdk/xdr/Liabilities.java b/src/main/java/org/stellar/sdk/xdr/Liabilities.java index 8f1d8d4a2..22c9e554a 100644 --- a/src/main/java/org/stellar/sdk/xdr/Liabilities.java +++ b/src/main/java/org/stellar/sdk/xdr/Liabilities.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -86,8 +88,8 @@ public Builder selling(Int64 selling) { public Liabilities build() { Liabilities val = new Liabilities(); - val.setBuying(buying); - val.setSelling(selling); + val.setBuying(this.buying); + val.setSelling(this.selling); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolConstantProductParameters.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolConstantProductParameters.java index b0a5ba762..1749d58be 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolConstantProductParameters.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolConstantProductParameters.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -111,9 +113,9 @@ public Builder fee(Int32 fee) { public LiquidityPoolConstantProductParameters build() { LiquidityPoolConstantProductParameters val = new LiquidityPoolConstantProductParameters(); - val.setAssetA(assetA); - val.setAssetB(assetB); - val.setFee(fee); + val.setAssetA(this.assetA); + val.setAssetB(this.assetB); + val.setFee(this.fee); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositOp.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositOp.java index 1674692d1..f76f98752 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositOp.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -149,11 +151,11 @@ public Builder maxPrice(Price maxPrice) { public LiquidityPoolDepositOp build() { LiquidityPoolDepositOp val = new LiquidityPoolDepositOp(); - val.setLiquidityPoolID(liquidityPoolID); - val.setMaxAmountA(maxAmountA); - val.setMaxAmountB(maxAmountB); - val.setMinPrice(minPrice); - val.setMaxPrice(maxPrice); + val.setLiquidityPoolID(this.liquidityPoolID); + val.setMaxAmountA(this.maxAmountA); + val.setMaxAmountB(this.maxAmountB); + val.setMinPrice(this.minPrice); + val.setMaxPrice(this.maxPrice); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResult.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResult.java index 03e3336fe..0abc15f7b 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResult.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,13 @@ // { // case LIQUIDITY_POOL_DEPOSIT_SUCCESS: // void; -// default: +// case LIQUIDITY_POOL_DEPOSIT_MALFORMED: +// case LIQUIDITY_POOL_DEPOSIT_NO_TRUST: +// case LIQUIDITY_POOL_DEPOSIT_NOT_AUTHORIZED: +// case LIQUIDITY_POOL_DEPOSIT_UNDERFUNDED: +// case LIQUIDITY_POOL_DEPOSIT_LINE_FULL: +// case LIQUIDITY_POOL_DEPOSIT_BAD_PRICE: +// case LIQUIDITY_POOL_DEPOSIT_POOL_FULL: // void; // }; @@ -54,7 +62,13 @@ public static void encode( switch (encodedLiquidityPoolDepositResult.getDiscriminant()) { case LIQUIDITY_POOL_DEPOSIT_SUCCESS: break; - default: + case LIQUIDITY_POOL_DEPOSIT_MALFORMED: + case LIQUIDITY_POOL_DEPOSIT_NO_TRUST: + case LIQUIDITY_POOL_DEPOSIT_NOT_AUTHORIZED: + case LIQUIDITY_POOL_DEPOSIT_UNDERFUNDED: + case LIQUIDITY_POOL_DEPOSIT_LINE_FULL: + case LIQUIDITY_POOL_DEPOSIT_BAD_PRICE: + case LIQUIDITY_POOL_DEPOSIT_POOL_FULL: break; } } @@ -70,7 +84,13 @@ public static LiquidityPoolDepositResult decode(XdrDataInputStream stream) throw switch (decodedLiquidityPoolDepositResult.getDiscriminant()) { case LIQUIDITY_POOL_DEPOSIT_SUCCESS: break; - default: + case LIQUIDITY_POOL_DEPOSIT_MALFORMED: + case LIQUIDITY_POOL_DEPOSIT_NO_TRUST: + case LIQUIDITY_POOL_DEPOSIT_NOT_AUTHORIZED: + case LIQUIDITY_POOL_DEPOSIT_UNDERFUNDED: + case LIQUIDITY_POOL_DEPOSIT_LINE_FULL: + case LIQUIDITY_POOL_DEPOSIT_BAD_PRICE: + case LIQUIDITY_POOL_DEPOSIT_POOL_FULL: break; } return decodedLiquidityPoolDepositResult; diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResultCode.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResultCode.java index 78b762956..d24a52369 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolEntry.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolEntry.java index 96d8bdf61..77c7fdfb1 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolEntry.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -102,8 +104,8 @@ public Builder body(LiquidityPoolEntryBody body) { public LiquidityPoolEntry build() { LiquidityPoolEntry val = new LiquidityPoolEntry(); - val.setLiquidityPoolID(liquidityPoolID); - val.setBody(body); + val.setLiquidityPoolID(this.liquidityPoolID); + val.setBody(this.body); return val; } } @@ -148,7 +150,7 @@ public Builder constantProduct(LiquidityPoolEntryConstantProduct constantProduct public LiquidityPoolEntryBody build() { LiquidityPoolEntryBody val = new LiquidityPoolEntryBody(); val.setDiscriminant(discriminant); - val.setConstantProduct(constantProduct); + val.setConstantProduct(this.constantProduct); return val; } } @@ -340,11 +342,11 @@ public Builder poolSharesTrustLineCount(Int64 poolSharesTrustLineCount) { public LiquidityPoolEntryConstantProduct build() { LiquidityPoolEntryConstantProduct val = new LiquidityPoolEntryConstantProduct(); - val.setParams(params); - val.setReserveA(reserveA); - val.setReserveB(reserveB); - val.setTotalPoolShares(totalPoolShares); - val.setPoolSharesTrustLineCount(poolSharesTrustLineCount); + val.setParams(this.params); + val.setReserveA(this.reserveA); + val.setReserveB(this.reserveB); + val.setTotalPoolShares(this.totalPoolShares); + val.setPoolSharesTrustLineCount(this.poolSharesTrustLineCount); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolParameters.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolParameters.java index 10f0a14c2..4fdc23e2b 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolParameters.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolParameters.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -55,7 +57,7 @@ public Builder constantProduct(LiquidityPoolConstantProductParameters constantPr public LiquidityPoolParameters build() { LiquidityPoolParameters val = new LiquidityPoolParameters(); val.setDiscriminant(discriminant); - val.setConstantProduct(constantProduct); + val.setConstantProduct(this.constantProduct); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolType.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolType.java index e5da1c921..e7bf8e6cd 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolType.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawOp.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawOp.java index b606a5248..31881dd76 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawOp.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -128,10 +130,10 @@ public Builder minAmountB(Int64 minAmountB) { public LiquidityPoolWithdrawOp build() { LiquidityPoolWithdrawOp val = new LiquidityPoolWithdrawOp(); - val.setLiquidityPoolID(liquidityPoolID); - val.setAmount(amount); - val.setMinAmountA(minAmountA); - val.setMinAmountB(minAmountB); + val.setLiquidityPoolID(this.liquidityPoolID); + val.setAmount(this.amount); + val.setMinAmountA(this.minAmountA); + val.setMinAmountB(this.minAmountB); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResult.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResult.java index eacda72b1..c42ee7e58 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResult.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,11 @@ // { // case LIQUIDITY_POOL_WITHDRAW_SUCCESS: // void; -// default: +// case LIQUIDITY_POOL_WITHDRAW_MALFORMED: +// case LIQUIDITY_POOL_WITHDRAW_NO_TRUST: +// case LIQUIDITY_POOL_WITHDRAW_UNDERFUNDED: +// case LIQUIDITY_POOL_WITHDRAW_LINE_FULL: +// case LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM: // void; // }; @@ -54,7 +60,11 @@ public static void encode( switch (encodedLiquidityPoolWithdrawResult.getDiscriminant()) { case LIQUIDITY_POOL_WITHDRAW_SUCCESS: break; - default: + case LIQUIDITY_POOL_WITHDRAW_MALFORMED: + case LIQUIDITY_POOL_WITHDRAW_NO_TRUST: + case LIQUIDITY_POOL_WITHDRAW_UNDERFUNDED: + case LIQUIDITY_POOL_WITHDRAW_LINE_FULL: + case LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM: break; } } @@ -71,7 +81,11 @@ public static LiquidityPoolWithdrawResult decode(XdrDataInputStream stream) thro switch (decodedLiquidityPoolWithdrawResult.getDiscriminant()) { case LIQUIDITY_POOL_WITHDRAW_SUCCESS: break; - default: + case LIQUIDITY_POOL_WITHDRAW_MALFORMED: + case LIQUIDITY_POOL_WITHDRAW_NO_TRUST: + case LIQUIDITY_POOL_WITHDRAW_UNDERFUNDED: + case LIQUIDITY_POOL_WITHDRAW_LINE_FULL: + case LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM: break; } return decodedLiquidityPoolWithdrawResult; diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResultCode.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResultCode.java index da511f93d..a6ee0eb29 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferOp.java b/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferOp.java index ff5d36575..8a1067a10 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferOp.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -150,11 +152,11 @@ public Builder offerID(Int64 offerID) { public ManageBuyOfferOp build() { ManageBuyOfferOp val = new ManageBuyOfferOp(); - val.setSelling(selling); - val.setBuying(buying); - val.setBuyAmount(buyAmount); - val.setPrice(price); - val.setOfferID(offerID); + val.setSelling(this.selling); + val.setBuying(this.buying); + val.setBuyAmount(this.buyAmount); + val.setPrice(this.price); + val.setOfferID(this.offerID); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResult.java b/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResult.java index 9a6235d81..a54a14a19 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,18 @@ // { // case MANAGE_BUY_OFFER_SUCCESS: // ManageOfferSuccessResult success; -// default: +// case MANAGE_BUY_OFFER_MALFORMED: +// case MANAGE_BUY_OFFER_SELL_NO_TRUST: +// case MANAGE_BUY_OFFER_BUY_NO_TRUST: +// case MANAGE_BUY_OFFER_SELL_NOT_AUTHORIZED: +// case MANAGE_BUY_OFFER_BUY_NOT_AUTHORIZED: +// case MANAGE_BUY_OFFER_LINE_FULL: +// case MANAGE_BUY_OFFER_UNDERFUNDED: +// case MANAGE_BUY_OFFER_CROSS_SELF: +// case MANAGE_BUY_OFFER_SELL_NO_ISSUER: +// case MANAGE_BUY_OFFER_BUY_NO_ISSUER: +// case MANAGE_BUY_OFFER_NOT_FOUND: +// case MANAGE_BUY_OFFER_LOW_RESERVE: // void; // }; @@ -57,7 +70,7 @@ public Builder success(ManageOfferSuccessResult success) { public ManageBuyOfferResult build() { ManageBuyOfferResult val = new ManageBuyOfferResult(); val.setDiscriminant(discriminant); - val.setSuccess(success); + val.setSuccess(this.success); return val; } } @@ -72,7 +85,18 @@ public static void encode( case MANAGE_BUY_OFFER_SUCCESS: ManageOfferSuccessResult.encode(stream, encodedManageBuyOfferResult.success); break; - default: + case MANAGE_BUY_OFFER_MALFORMED: + case MANAGE_BUY_OFFER_SELL_NO_TRUST: + case MANAGE_BUY_OFFER_BUY_NO_TRUST: + case MANAGE_BUY_OFFER_SELL_NOT_AUTHORIZED: + case MANAGE_BUY_OFFER_BUY_NOT_AUTHORIZED: + case MANAGE_BUY_OFFER_LINE_FULL: + case MANAGE_BUY_OFFER_UNDERFUNDED: + case MANAGE_BUY_OFFER_CROSS_SELF: + case MANAGE_BUY_OFFER_SELL_NO_ISSUER: + case MANAGE_BUY_OFFER_BUY_NO_ISSUER: + case MANAGE_BUY_OFFER_NOT_FOUND: + case MANAGE_BUY_OFFER_LOW_RESERVE: break; } } @@ -89,7 +113,18 @@ public static ManageBuyOfferResult decode(XdrDataInputStream stream) throws IOEx case MANAGE_BUY_OFFER_SUCCESS: decodedManageBuyOfferResult.success = ManageOfferSuccessResult.decode(stream); break; - default: + case MANAGE_BUY_OFFER_MALFORMED: + case MANAGE_BUY_OFFER_SELL_NO_TRUST: + case MANAGE_BUY_OFFER_BUY_NO_TRUST: + case MANAGE_BUY_OFFER_SELL_NOT_AUTHORIZED: + case MANAGE_BUY_OFFER_BUY_NOT_AUTHORIZED: + case MANAGE_BUY_OFFER_LINE_FULL: + case MANAGE_BUY_OFFER_UNDERFUNDED: + case MANAGE_BUY_OFFER_CROSS_SELF: + case MANAGE_BUY_OFFER_SELL_NO_ISSUER: + case MANAGE_BUY_OFFER_BUY_NO_ISSUER: + case MANAGE_BUY_OFFER_NOT_FOUND: + case MANAGE_BUY_OFFER_LOW_RESERVE: break; } return decodedManageBuyOfferResult; diff --git a/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResultCode.java b/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResultCode.java index f194c07d1..f9f2af825 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/ManageDataOp.java b/src/main/java/org/stellar/sdk/xdr/ManageDataOp.java index f75fc1565..ab7fe52e6 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageDataOp.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageDataOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -95,8 +97,8 @@ public Builder dataValue(DataValue dataValue) { public ManageDataOp build() { ManageDataOp val = new ManageDataOp(); - val.setDataName(dataName); - val.setDataValue(dataValue); + val.setDataName(this.dataName); + val.setDataValue(this.dataValue); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ManageDataResult.java b/src/main/java/org/stellar/sdk/xdr/ManageDataResult.java index c53d336ad..e126cf1d4 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageDataResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageDataResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,10 @@ // { // case MANAGE_DATA_SUCCESS: // void; -// default: +// case MANAGE_DATA_NOT_SUPPORTED_YET: +// case MANAGE_DATA_NAME_NOT_FOUND: +// case MANAGE_DATA_LOW_RESERVE: +// case MANAGE_DATA_INVALID_NAME: // void; // }; @@ -53,7 +58,10 @@ public static void encode(XdrDataOutputStream stream, ManageDataResult encodedMa switch (encodedManageDataResult.getDiscriminant()) { case MANAGE_DATA_SUCCESS: break; - default: + case MANAGE_DATA_NOT_SUPPORTED_YET: + case MANAGE_DATA_NAME_NOT_FOUND: + case MANAGE_DATA_LOW_RESERVE: + case MANAGE_DATA_INVALID_NAME: break; } } @@ -69,7 +77,10 @@ public static ManageDataResult decode(XdrDataInputStream stream) throws IOExcept switch (decodedManageDataResult.getDiscriminant()) { case MANAGE_DATA_SUCCESS: break; - default: + case MANAGE_DATA_NOT_SUPPORTED_YET: + case MANAGE_DATA_NAME_NOT_FOUND: + case MANAGE_DATA_LOW_RESERVE: + case MANAGE_DATA_INVALID_NAME: break; } return decodedManageDataResult; diff --git a/src/main/java/org/stellar/sdk/xdr/ManageDataResultCode.java b/src/main/java/org/stellar/sdk/xdr/ManageDataResultCode.java index 604498d20..96bdf6562 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageDataResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageDataResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/ManageOfferEffect.java b/src/main/java/org/stellar/sdk/xdr/ManageOfferEffect.java index 7336b8ae8..ce9a70558 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageOfferEffect.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageOfferEffect.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/ManageOfferOp.java b/src/main/java/org/stellar/sdk/xdr/ManageOfferOp.java deleted file mode 100644 index 722c4b549..000000000 --- a/src/main/java/org/stellar/sdk/xdr/ManageOfferOp.java +++ /dev/null @@ -1,93 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -package org.stellar.sdk.xdr; - -import java.io.IOException; - -// === xdr source ============================================================ - -// struct ManageOfferOp -// { -// Asset selling; -// Asset buying; -// int64 amount; // amount being sold. if set to 0, delete the offer -// Price price; // price of thing being sold in terms of what you are buying -// -// // 0=create a new offer, otherwise edit an existing offer -// uint64 offerID; -// }; - -// =========================================================================== -public class ManageOfferOp { - public ManageOfferOp() {} - - private Asset selling; - - public Asset getSelling() { - return this.selling; - } - - public void setSelling(Asset value) { - this.selling = value; - } - - private Asset buying; - - public Asset getBuying() { - return this.buying; - } - - public void setBuying(Asset value) { - this.buying = value; - } - - private Int64 amount; - - public Int64 getAmount() { - return this.amount; - } - - public void setAmount(Int64 value) { - this.amount = value; - } - - private Price price; - - public Price getPrice() { - return this.price; - } - - public void setPrice(Price value) { - this.price = value; - } - - private Uint64 offerID; - - public Uint64 getOfferID() { - return this.offerID; - } - - public void setOfferID(Uint64 value) { - this.offerID = value; - } - - public static void encode(XdrDataOutputStream stream, ManageOfferOp encodedManageOfferOp) - throws IOException { - Asset.encode(stream, encodedManageOfferOp.selling); - Asset.encode(stream, encodedManageOfferOp.buying); - Int64.encode(stream, encodedManageOfferOp.amount); - Price.encode(stream, encodedManageOfferOp.price); - Uint64.encode(stream, encodedManageOfferOp.offerID); - } - - public static ManageOfferOp decode(XdrDataInputStream stream) throws IOException { - ManageOfferOp decodedManageOfferOp = new ManageOfferOp(); - decodedManageOfferOp.selling = Asset.decode(stream); - decodedManageOfferOp.buying = Asset.decode(stream); - decodedManageOfferOp.amount = Int64.decode(stream); - decodedManageOfferOp.price = Price.decode(stream); - decodedManageOfferOp.offerID = Uint64.decode(stream); - return decodedManageOfferOp; - } -} diff --git a/src/main/java/org/stellar/sdk/xdr/ManageOfferResult.java b/src/main/java/org/stellar/sdk/xdr/ManageOfferResult.java deleted file mode 100644 index 48f1a5ba8..000000000 --- a/src/main/java/org/stellar/sdk/xdr/ManageOfferResult.java +++ /dev/null @@ -1,67 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -package org.stellar.sdk.xdr; - -import java.io.IOException; - -// === xdr source ============================================================ - -// union ManageOfferResult switch (ManageOfferResultCode code) -// { -// case MANAGE_OFFER_SUCCESS: -// ManageOfferSuccessResult success; -// default: -// void; -// }; - -// =========================================================================== -public class ManageOfferResult { - public ManageOfferResult() {} - - ManageOfferResultCode code; - - public ManageOfferResultCode getDiscriminant() { - return this.code; - } - - public void setDiscriminant(ManageOfferResultCode value) { - this.code = value; - } - - private ManageOfferSuccessResult success; - - public ManageOfferSuccessResult getSuccess() { - return this.success; - } - - public void setSuccess(ManageOfferSuccessResult value) { - this.success = value; - } - - public static void encode(XdrDataOutputStream stream, ManageOfferResult encodedManageOfferResult) - throws IOException { - stream.writeInt(encodedManageOfferResult.getDiscriminant().getValue()); - switch (encodedManageOfferResult.getDiscriminant()) { - case MANAGE_OFFER_SUCCESS: - ManageOfferSuccessResult.encode(stream, encodedManageOfferResult.success); - break; - default: - break; - } - } - - public static ManageOfferResult decode(XdrDataInputStream stream) throws IOException { - ManageOfferResult decodedManageOfferResult = new ManageOfferResult(); - ManageOfferResultCode discriminant = ManageOfferResultCode.decode(stream); - decodedManageOfferResult.setDiscriminant(discriminant); - switch (decodedManageOfferResult.getDiscriminant()) { - case MANAGE_OFFER_SUCCESS: - decodedManageOfferResult.success = ManageOfferSuccessResult.decode(stream); - break; - default: - break; - } - return decodedManageOfferResult; - } -} diff --git a/src/main/java/org/stellar/sdk/xdr/ManageOfferResultCode.java b/src/main/java/org/stellar/sdk/xdr/ManageOfferResultCode.java deleted file mode 100644 index bc2b3652b..000000000 --- a/src/main/java/org/stellar/sdk/xdr/ManageOfferResultCode.java +++ /dev/null @@ -1,96 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -package org.stellar.sdk.xdr; - -import java.io.IOException; - -// === xdr source ============================================================ - -// enum ManageOfferResultCode -// { -// // codes considered as "success" for the operation -// MANAGE_OFFER_SUCCESS = 0, -// -// // codes considered as "failure" for the operation -// MANAGE_OFFER_MALFORMED = -1, // generated offer would be invalid -// MANAGE_OFFER_SELL_NO_TRUST = -2, // no trust line for what we're selling -// MANAGE_OFFER_BUY_NO_TRUST = -3, // no trust line for what we're buying -// MANAGE_OFFER_SELL_NOT_AUTHORIZED = -4, // not authorized to sell -// MANAGE_OFFER_BUY_NOT_AUTHORIZED = -5, // not authorized to buy -// MANAGE_OFFER_LINE_FULL = -6, // can't receive more of what it's buying -// MANAGE_OFFER_UNDERFUNDED = -7, // doesn't hold what it's trying to sell -// MANAGE_OFFER_CROSS_SELF = -8, // would cross an offer from the same user -// MANAGE_OFFER_SELL_NO_ISSUER = -9, // no issuer for what we're selling -// MANAGE_OFFER_BUY_NO_ISSUER = -10, // no issuer for what we're buying -// -// // update errors -// MANAGE_OFFER_NOT_FOUND = -11, // offerID does not match an existing offer -// -// MANAGE_OFFER_LOW_RESERVE = -12 // not enough funds to create a new Offer -// }; - -// =========================================================================== -public enum ManageOfferResultCode { - MANAGE_OFFER_SUCCESS(0), - MANAGE_OFFER_MALFORMED(-1), - MANAGE_OFFER_SELL_NO_TRUST(-2), - MANAGE_OFFER_BUY_NO_TRUST(-3), - MANAGE_OFFER_SELL_NOT_AUTHORIZED(-4), - MANAGE_OFFER_BUY_NOT_AUTHORIZED(-5), - MANAGE_OFFER_LINE_FULL(-6), - MANAGE_OFFER_UNDERFUNDED(-7), - MANAGE_OFFER_CROSS_SELF(-8), - MANAGE_OFFER_SELL_NO_ISSUER(-9), - MANAGE_OFFER_BUY_NO_ISSUER(-10), - MANAGE_OFFER_NOT_FOUND(-11), - MANAGE_OFFER_LOW_RESERVE(-12), - ; - private int mValue; - - ManageOfferResultCode(int value) { - mValue = value; - } - - public int getValue() { - return mValue; - } - - static ManageOfferResultCode decode(XdrDataInputStream stream) throws IOException { - int value = stream.readInt(); - switch (value) { - case 0: - return MANAGE_OFFER_SUCCESS; - case -1: - return MANAGE_OFFER_MALFORMED; - case -2: - return MANAGE_OFFER_SELL_NO_TRUST; - case -3: - return MANAGE_OFFER_BUY_NO_TRUST; - case -4: - return MANAGE_OFFER_SELL_NOT_AUTHORIZED; - case -5: - return MANAGE_OFFER_BUY_NOT_AUTHORIZED; - case -6: - return MANAGE_OFFER_LINE_FULL; - case -7: - return MANAGE_OFFER_UNDERFUNDED; - case -8: - return MANAGE_OFFER_CROSS_SELF; - case -9: - return MANAGE_OFFER_SELL_NO_ISSUER; - case -10: - return MANAGE_OFFER_BUY_NO_ISSUER; - case -11: - return MANAGE_OFFER_NOT_FOUND; - case -12: - return MANAGE_OFFER_LOW_RESERVE; - default: - throw new RuntimeException("Unknown enum value: " + value); - } - } - - static void encode(XdrDataOutputStream stream, ManageOfferResultCode value) throws IOException { - stream.writeInt(value.getValue()); - } -} diff --git a/src/main/java/org/stellar/sdk/xdr/ManageOfferSuccessResult.java b/src/main/java/org/stellar/sdk/xdr/ManageOfferSuccessResult.java index 48d279ef3..ace941539 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageOfferSuccessResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageOfferSuccessResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -19,7 +21,7 @@ // case MANAGE_OFFER_CREATED: // case MANAGE_OFFER_UPDATED: // OfferEntry offer; -// default: +// case MANAGE_OFFER_DELETED: // void; // } // offer; @@ -107,8 +109,8 @@ public Builder offer(ManageOfferSuccessResultOffer offer) { public ManageOfferSuccessResult build() { ManageOfferSuccessResult val = new ManageOfferSuccessResult(); - val.setOffersClaimed(offersClaimed); - val.setOffer(offer); + val.setOffersClaimed(this.offersClaimed); + val.setOffer(this.offer); return val; } } @@ -153,7 +155,7 @@ public Builder offer(OfferEntry offer) { public ManageOfferSuccessResultOffer build() { ManageOfferSuccessResultOffer val = new ManageOfferSuccessResultOffer(); val.setDiscriminant(discriminant); - val.setOffer(offer); + val.setOffer(this.offer); return val; } } @@ -170,7 +172,7 @@ public static void encode( case MANAGE_OFFER_UPDATED: OfferEntry.encode(stream, encodedManageOfferSuccessResultOffer.offer); break; - default: + case MANAGE_OFFER_DELETED: break; } } @@ -190,7 +192,7 @@ public static ManageOfferSuccessResultOffer decode(XdrDataInputStream stream) case MANAGE_OFFER_UPDATED: decodedManageOfferSuccessResultOffer.offer = OfferEntry.decode(stream); break; - default: + case MANAGE_OFFER_DELETED: break; } return decodedManageOfferSuccessResultOffer; diff --git a/src/main/java/org/stellar/sdk/xdr/ManageSellOfferOp.java b/src/main/java/org/stellar/sdk/xdr/ManageSellOfferOp.java index 7b4f03778..d5c46e8aa 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageSellOfferOp.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageSellOfferOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -149,11 +151,11 @@ public Builder offerID(Int64 offerID) { public ManageSellOfferOp build() { ManageSellOfferOp val = new ManageSellOfferOp(); - val.setSelling(selling); - val.setBuying(buying); - val.setAmount(amount); - val.setPrice(price); - val.setOfferID(offerID); + val.setSelling(this.selling); + val.setBuying(this.buying); + val.setAmount(this.amount); + val.setPrice(this.price); + val.setOfferID(this.offerID); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResult.java b/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResult.java index 92276b1cf..4a9f839a4 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,18 @@ // { // case MANAGE_SELL_OFFER_SUCCESS: // ManageOfferSuccessResult success; -// default: +// case MANAGE_SELL_OFFER_MALFORMED: +// case MANAGE_SELL_OFFER_SELL_NO_TRUST: +// case MANAGE_SELL_OFFER_BUY_NO_TRUST: +// case MANAGE_SELL_OFFER_SELL_NOT_AUTHORIZED: +// case MANAGE_SELL_OFFER_BUY_NOT_AUTHORIZED: +// case MANAGE_SELL_OFFER_LINE_FULL: +// case MANAGE_SELL_OFFER_UNDERFUNDED: +// case MANAGE_SELL_OFFER_CROSS_SELF: +// case MANAGE_SELL_OFFER_SELL_NO_ISSUER: +// case MANAGE_SELL_OFFER_BUY_NO_ISSUER: +// case MANAGE_SELL_OFFER_NOT_FOUND: +// case MANAGE_SELL_OFFER_LOW_RESERVE: // void; // }; @@ -57,7 +70,7 @@ public Builder success(ManageOfferSuccessResult success) { public ManageSellOfferResult build() { ManageSellOfferResult val = new ManageSellOfferResult(); val.setDiscriminant(discriminant); - val.setSuccess(success); + val.setSuccess(this.success); return val; } } @@ -72,7 +85,18 @@ public static void encode( case MANAGE_SELL_OFFER_SUCCESS: ManageOfferSuccessResult.encode(stream, encodedManageSellOfferResult.success); break; - default: + case MANAGE_SELL_OFFER_MALFORMED: + case MANAGE_SELL_OFFER_SELL_NO_TRUST: + case MANAGE_SELL_OFFER_BUY_NO_TRUST: + case MANAGE_SELL_OFFER_SELL_NOT_AUTHORIZED: + case MANAGE_SELL_OFFER_BUY_NOT_AUTHORIZED: + case MANAGE_SELL_OFFER_LINE_FULL: + case MANAGE_SELL_OFFER_UNDERFUNDED: + case MANAGE_SELL_OFFER_CROSS_SELF: + case MANAGE_SELL_OFFER_SELL_NO_ISSUER: + case MANAGE_SELL_OFFER_BUY_NO_ISSUER: + case MANAGE_SELL_OFFER_NOT_FOUND: + case MANAGE_SELL_OFFER_LOW_RESERVE: break; } } @@ -89,7 +113,18 @@ public static ManageSellOfferResult decode(XdrDataInputStream stream) throws IOE case MANAGE_SELL_OFFER_SUCCESS: decodedManageSellOfferResult.success = ManageOfferSuccessResult.decode(stream); break; - default: + case MANAGE_SELL_OFFER_MALFORMED: + case MANAGE_SELL_OFFER_SELL_NO_TRUST: + case MANAGE_SELL_OFFER_BUY_NO_TRUST: + case MANAGE_SELL_OFFER_SELL_NOT_AUTHORIZED: + case MANAGE_SELL_OFFER_BUY_NOT_AUTHORIZED: + case MANAGE_SELL_OFFER_LINE_FULL: + case MANAGE_SELL_OFFER_UNDERFUNDED: + case MANAGE_SELL_OFFER_CROSS_SELF: + case MANAGE_SELL_OFFER_SELL_NO_ISSUER: + case MANAGE_SELL_OFFER_BUY_NO_ISSUER: + case MANAGE_SELL_OFFER_NOT_FOUND: + case MANAGE_SELL_OFFER_LOW_RESERVE: break; } return decodedManageSellOfferResult; diff --git a/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResultCode.java b/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResultCode.java index e046d489c..6bc21bc13 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/Memo.java b/src/main/java/org/stellar/sdk/xdr/Memo.java index ff100d7a8..e34cd5030 100644 --- a/src/main/java/org/stellar/sdk/xdr/Memo.java +++ b/src/main/java/org/stellar/sdk/xdr/Memo.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -111,10 +113,10 @@ public Builder retHash(Hash retHash) { public Memo build() { Memo val = new Memo(); val.setDiscriminant(discriminant); - val.setText(text); - val.setId(id); - val.setHash(hash); - val.setRetHash(retHash); + val.setText(this.text); + val.setId(this.id); + val.setHash(this.hash); + val.setRetHash(this.retHash); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/MemoType.java b/src/main/java/org/stellar/sdk/xdr/MemoType.java index 7b5eba6d2..739f839ba 100644 --- a/src/main/java/org/stellar/sdk/xdr/MemoType.java +++ b/src/main/java/org/stellar/sdk/xdr/MemoType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/MessageType.java b/src/main/java/org/stellar/sdk/xdr/MessageType.java index 8aeba242b..1a1b0113f 100644 --- a/src/main/java/org/stellar/sdk/xdr/MessageType.java +++ b/src/main/java/org/stellar/sdk/xdr/MessageType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ @@ -18,6 +20,7 @@ // // GET_TX_SET = 6, // gets a particular txset by hash // TX_SET = 7, +// GENERALIZED_TX_SET = 17, // // TRANSACTION = 8, // pass on a tx you have heard about // @@ -33,7 +36,11 @@ // SURVEY_REQUEST = 14, // SURVEY_RESPONSE = 15, // -// SEND_MORE = 16 +// SEND_MORE = 16, +// SEND_MORE_EXTENDED = 20, +// +// FLOOD_ADVERT = 18, +// FLOOD_DEMAND = 19 // }; // =========================================================================== @@ -45,6 +52,7 @@ public enum MessageType implements XdrElement { PEERS(5), GET_TX_SET(6), TX_SET(7), + GENERALIZED_TX_SET(17), TRANSACTION(8), GET_SCP_QUORUMSET(9), SCP_QUORUMSET(10), @@ -54,6 +62,9 @@ public enum MessageType implements XdrElement { SURVEY_REQUEST(14), SURVEY_RESPONSE(15), SEND_MORE(16), + SEND_MORE_EXTENDED(20), + FLOOD_ADVERT(18), + FLOOD_DEMAND(19), ; private int mValue; @@ -82,6 +93,8 @@ public static MessageType decode(XdrDataInputStream stream) throws IOException { return GET_TX_SET; case 7: return TX_SET; + case 17: + return GENERALIZED_TX_SET; case 8: return TRANSACTION; case 9: @@ -100,6 +113,12 @@ public static MessageType decode(XdrDataInputStream stream) throws IOException { return SURVEY_RESPONSE; case 16: return SEND_MORE; + case 20: + return SEND_MORE_EXTENDED; + case 18: + return FLOOD_ADVERT; + case 19: + return FLOOD_DEMAND; default: throw new RuntimeException("Unknown enum value: " + value); } diff --git a/src/main/java/org/stellar/sdk/xdr/MuxedAccount.java b/src/main/java/org/stellar/sdk/xdr/MuxedAccount.java index 598738b28..78a5643f4 100644 --- a/src/main/java/org/stellar/sdk/xdr/MuxedAccount.java +++ b/src/main/java/org/stellar/sdk/xdr/MuxedAccount.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -77,8 +79,8 @@ public Builder med25519(MuxedAccountMed25519 med25519) { public MuxedAccount build() { MuxedAccount val = new MuxedAccount(); val.setDiscriminant(discriminant); - val.setEd25519(ed25519); - val.setMed25519(med25519); + val.setEd25519(this.ed25519); + val.setMed25519(this.med25519); return val; } } @@ -206,8 +208,8 @@ public Builder ed25519(Uint256 ed25519) { public MuxedAccountMed25519 build() { MuxedAccountMed25519 val = new MuxedAccountMed25519(); - val.setId(id); - val.setEd25519(ed25519); + val.setId(this.id); + val.setEd25519(this.ed25519); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/NodeID.java b/src/main/java/org/stellar/sdk/xdr/NodeID.java index 0f1a74096..ccd5ee635 100644 --- a/src/main/java/org/stellar/sdk/xdr/NodeID.java +++ b/src/main/java/org/stellar/sdk/xdr/NodeID.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; diff --git a/src/main/java/org/stellar/sdk/xdr/OfferEntry.java b/src/main/java/org/stellar/sdk/xdr/OfferEntry.java index d499d84e6..0bb10895b 100644 --- a/src/main/java/org/stellar/sdk/xdr/OfferEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/OfferEntry.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -228,14 +230,14 @@ public Builder ext(OfferEntryExt ext) { public OfferEntry build() { OfferEntry val = new OfferEntry(); - val.setSellerID(sellerID); - val.setOfferID(offerID); - val.setSelling(selling); - val.setBuying(buying); - val.setAmount(amount); - val.setPrice(price); - val.setFlags(flags); - val.setExt(ext); + val.setSellerID(this.sellerID); + val.setOfferID(this.offerID); + val.setSelling(this.selling); + val.setBuying(this.buying); + val.setAmount(this.amount); + val.setPrice(this.price); + val.setFlags(this.flags); + val.setExt(this.ext); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/OfferEntryFlags.java b/src/main/java/org/stellar/sdk/xdr/OfferEntryFlags.java index 3283c91b2..0c5bedc17 100644 --- a/src/main/java/org/stellar/sdk/xdr/OfferEntryFlags.java +++ b/src/main/java/org/stellar/sdk/xdr/OfferEntryFlags.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/Operation.java b/src/main/java/org/stellar/sdk/xdr/Operation.java index 8c0aadad1..eb44510e7 100644 --- a/src/main/java/org/stellar/sdk/xdr/Operation.java +++ b/src/main/java/org/stellar/sdk/xdr/Operation.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -65,6 +67,12 @@ // LiquidityPoolDepositOp liquidityPoolDepositOp; // case LIQUIDITY_POOL_WITHDRAW: // LiquidityPoolWithdrawOp liquidityPoolWithdrawOp; +// case INVOKE_HOST_FUNCTION: +// InvokeHostFunctionOp invokeHostFunctionOp; +// case BUMP_FOOTPRINT_EXPIRATION: +// BumpFootprintExpirationOp bumpFootprintExpirationOp; +// case RESTORE_FOOTPRINT: +// RestoreFootprintOp restoreFootprintOp; // } // body; // }; @@ -150,8 +158,8 @@ public Builder body(OperationBody body) { public Operation build() { Operation val = new Operation(); - val.setSourceAccount(sourceAccount); - val.setBody(body); + val.setSourceAccount(this.sourceAccount); + val.setBody(this.body); return val; } } @@ -389,6 +397,36 @@ public void setLiquidityPoolWithdrawOp(LiquidityPoolWithdrawOp value) { this.liquidityPoolWithdrawOp = value; } + private InvokeHostFunctionOp invokeHostFunctionOp; + + public InvokeHostFunctionOp getInvokeHostFunctionOp() { + return this.invokeHostFunctionOp; + } + + public void setInvokeHostFunctionOp(InvokeHostFunctionOp value) { + this.invokeHostFunctionOp = value; + } + + private BumpFootprintExpirationOp bumpFootprintExpirationOp; + + public BumpFootprintExpirationOp getBumpFootprintExpirationOp() { + return this.bumpFootprintExpirationOp; + } + + public void setBumpFootprintExpirationOp(BumpFootprintExpirationOp value) { + this.bumpFootprintExpirationOp = value; + } + + private RestoreFootprintOp restoreFootprintOp; + + public RestoreFootprintOp getRestoreFootprintOp() { + return this.restoreFootprintOp; + } + + public void setRestoreFootprintOp(RestoreFootprintOp value) { + this.restoreFootprintOp = value; + } + public static final class Builder { private OperationType discriminant; private CreateAccountOp createAccountOp; @@ -413,6 +451,9 @@ public static final class Builder { private SetTrustLineFlagsOp setTrustLineFlagsOp; private LiquidityPoolDepositOp liquidityPoolDepositOp; private LiquidityPoolWithdrawOp liquidityPoolWithdrawOp; + private InvokeHostFunctionOp invokeHostFunctionOp; + private BumpFootprintExpirationOp bumpFootprintExpirationOp; + private RestoreFootprintOp restoreFootprintOp; public Builder discriminant(OperationType discriminant) { this.discriminant = discriminant; @@ -532,31 +573,50 @@ public Builder liquidityPoolWithdrawOp(LiquidityPoolWithdrawOp liquidityPoolWith return this; } + public Builder invokeHostFunctionOp(InvokeHostFunctionOp invokeHostFunctionOp) { + this.invokeHostFunctionOp = invokeHostFunctionOp; + return this; + } + + public Builder bumpFootprintExpirationOp( + BumpFootprintExpirationOp bumpFootprintExpirationOp) { + this.bumpFootprintExpirationOp = bumpFootprintExpirationOp; + return this; + } + + public Builder restoreFootprintOp(RestoreFootprintOp restoreFootprintOp) { + this.restoreFootprintOp = restoreFootprintOp; + return this; + } + public OperationBody build() { OperationBody val = new OperationBody(); val.setDiscriminant(discriminant); - val.setCreateAccountOp(createAccountOp); - val.setPaymentOp(paymentOp); - val.setPathPaymentStrictReceiveOp(pathPaymentStrictReceiveOp); - val.setManageSellOfferOp(manageSellOfferOp); - val.setCreatePassiveSellOfferOp(createPassiveSellOfferOp); - val.setSetOptionsOp(setOptionsOp); - val.setChangeTrustOp(changeTrustOp); - val.setAllowTrustOp(allowTrustOp); - val.setDestination(destination); - val.setManageDataOp(manageDataOp); - val.setBumpSequenceOp(bumpSequenceOp); - val.setManageBuyOfferOp(manageBuyOfferOp); - val.setPathPaymentStrictSendOp(pathPaymentStrictSendOp); - val.setCreateClaimableBalanceOp(createClaimableBalanceOp); - val.setClaimClaimableBalanceOp(claimClaimableBalanceOp); - val.setBeginSponsoringFutureReservesOp(beginSponsoringFutureReservesOp); - val.setRevokeSponsorshipOp(revokeSponsorshipOp); - val.setClawbackOp(clawbackOp); - val.setClawbackClaimableBalanceOp(clawbackClaimableBalanceOp); - val.setSetTrustLineFlagsOp(setTrustLineFlagsOp); - val.setLiquidityPoolDepositOp(liquidityPoolDepositOp); - val.setLiquidityPoolWithdrawOp(liquidityPoolWithdrawOp); + val.setCreateAccountOp(this.createAccountOp); + val.setPaymentOp(this.paymentOp); + val.setPathPaymentStrictReceiveOp(this.pathPaymentStrictReceiveOp); + val.setManageSellOfferOp(this.manageSellOfferOp); + val.setCreatePassiveSellOfferOp(this.createPassiveSellOfferOp); + val.setSetOptionsOp(this.setOptionsOp); + val.setChangeTrustOp(this.changeTrustOp); + val.setAllowTrustOp(this.allowTrustOp); + val.setDestination(this.destination); + val.setManageDataOp(this.manageDataOp); + val.setBumpSequenceOp(this.bumpSequenceOp); + val.setManageBuyOfferOp(this.manageBuyOfferOp); + val.setPathPaymentStrictSendOp(this.pathPaymentStrictSendOp); + val.setCreateClaimableBalanceOp(this.createClaimableBalanceOp); + val.setClaimClaimableBalanceOp(this.claimClaimableBalanceOp); + val.setBeginSponsoringFutureReservesOp(this.beginSponsoringFutureReservesOp); + val.setRevokeSponsorshipOp(this.revokeSponsorshipOp); + val.setClawbackOp(this.clawbackOp); + val.setClawbackClaimableBalanceOp(this.clawbackClaimableBalanceOp); + val.setSetTrustLineFlagsOp(this.setTrustLineFlagsOp); + val.setLiquidityPoolDepositOp(this.liquidityPoolDepositOp); + val.setLiquidityPoolWithdrawOp(this.liquidityPoolWithdrawOp); + val.setInvokeHostFunctionOp(this.invokeHostFunctionOp); + val.setBumpFootprintExpirationOp(this.bumpFootprintExpirationOp); + val.setRestoreFootprintOp(this.restoreFootprintOp); return val; } } @@ -640,6 +700,15 @@ public static void encode(XdrDataOutputStream stream, OperationBody encodedOpera case LIQUIDITY_POOL_WITHDRAW: LiquidityPoolWithdrawOp.encode(stream, encodedOperationBody.liquidityPoolWithdrawOp); break; + case INVOKE_HOST_FUNCTION: + InvokeHostFunctionOp.encode(stream, encodedOperationBody.invokeHostFunctionOp); + break; + case BUMP_FOOTPRINT_EXPIRATION: + BumpFootprintExpirationOp.encode(stream, encodedOperationBody.bumpFootprintExpirationOp); + break; + case RESTORE_FOOTPRINT: + RestoreFootprintOp.encode(stream, encodedOperationBody.restoreFootprintOp); + break; } } @@ -725,6 +794,15 @@ public static OperationBody decode(XdrDataInputStream stream) throws IOException case LIQUIDITY_POOL_WITHDRAW: decodedOperationBody.liquidityPoolWithdrawOp = LiquidityPoolWithdrawOp.decode(stream); break; + case INVOKE_HOST_FUNCTION: + decodedOperationBody.invokeHostFunctionOp = InvokeHostFunctionOp.decode(stream); + break; + case BUMP_FOOTPRINT_EXPIRATION: + decodedOperationBody.bumpFootprintExpirationOp = BumpFootprintExpirationOp.decode(stream); + break; + case RESTORE_FOOTPRINT: + decodedOperationBody.restoreFootprintOp = RestoreFootprintOp.decode(stream); + break; } return decodedOperationBody; } @@ -754,6 +832,9 @@ public int hashCode() { this.setTrustLineFlagsOp, this.liquidityPoolDepositOp, this.liquidityPoolWithdrawOp, + this.invokeHostFunctionOp, + this.bumpFootprintExpirationOp, + this.restoreFootprintOp, this.type); } @@ -787,6 +868,9 @@ public boolean equals(Object object) { && Objects.equal(this.setTrustLineFlagsOp, other.setTrustLineFlagsOp) && Objects.equal(this.liquidityPoolDepositOp, other.liquidityPoolDepositOp) && Objects.equal(this.liquidityPoolWithdrawOp, other.liquidityPoolWithdrawOp) + && Objects.equal(this.invokeHostFunctionOp, other.invokeHostFunctionOp) + && Objects.equal(this.bumpFootprintExpirationOp, other.bumpFootprintExpirationOp) + && Objects.equal(this.restoreFootprintOp, other.restoreFootprintOp) && Objects.equal(this.type, other.type); } } diff --git a/src/main/java/org/stellar/sdk/xdr/OperationID.java b/src/main/java/org/stellar/sdk/xdr/OperationID.java deleted file mode 100644 index b97e1deac..000000000 --- a/src/main/java/org/stellar/sdk/xdr/OperationID.java +++ /dev/null @@ -1,384 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -package org.stellar.sdk.xdr; - -import com.google.common.base.Objects; -import java.io.IOException; - -// === xdr source ============================================================ - -// union OperationID switch (EnvelopeType type) -// { -// case ENVELOPE_TYPE_OP_ID: -// struct -// { -// AccountID sourceAccount; -// SequenceNumber seqNum; -// uint32 opNum; -// } id; -// case ENVELOPE_TYPE_POOL_REVOKE_OP_ID: -// struct -// { -// AccountID sourceAccount; -// SequenceNumber seqNum; -// uint32 opNum; -// PoolID liquidityPoolID; -// Asset asset; -// } revokeId; -// }; - -// =========================================================================== -public class OperationID implements XdrElement { - public OperationID() {} - - EnvelopeType type; - - public EnvelopeType getDiscriminant() { - return this.type; - } - - public void setDiscriminant(EnvelopeType value) { - this.type = value; - } - - private OperationIDId id; - - public OperationIDId getId() { - return this.id; - } - - public void setId(OperationIDId value) { - this.id = value; - } - - private OperationIDRevokeId revokeId; - - public OperationIDRevokeId getRevokeId() { - return this.revokeId; - } - - public void setRevokeId(OperationIDRevokeId value) { - this.revokeId = value; - } - - public static final class Builder { - private EnvelopeType discriminant; - private OperationIDId id; - private OperationIDRevokeId revokeId; - - public Builder discriminant(EnvelopeType discriminant) { - this.discriminant = discriminant; - return this; - } - - public Builder id(OperationIDId id) { - this.id = id; - return this; - } - - public Builder revokeId(OperationIDRevokeId revokeId) { - this.revokeId = revokeId; - return this; - } - - public OperationID build() { - OperationID val = new OperationID(); - val.setDiscriminant(discriminant); - val.setId(id); - val.setRevokeId(revokeId); - return val; - } - } - - public static void encode(XdrDataOutputStream stream, OperationID encodedOperationID) - throws IOException { - // Xdrgen::AST::Identifier - // EnvelopeType - stream.writeInt(encodedOperationID.getDiscriminant().getValue()); - switch (encodedOperationID.getDiscriminant()) { - case ENVELOPE_TYPE_OP_ID: - OperationIDId.encode(stream, encodedOperationID.id); - break; - case ENVELOPE_TYPE_POOL_REVOKE_OP_ID: - OperationIDRevokeId.encode(stream, encodedOperationID.revokeId); - break; - } - } - - public void encode(XdrDataOutputStream stream) throws IOException { - encode(stream, this); - } - - public static OperationID decode(XdrDataInputStream stream) throws IOException { - OperationID decodedOperationID = new OperationID(); - EnvelopeType discriminant = EnvelopeType.decode(stream); - decodedOperationID.setDiscriminant(discriminant); - switch (decodedOperationID.getDiscriminant()) { - case ENVELOPE_TYPE_OP_ID: - decodedOperationID.id = OperationIDId.decode(stream); - break; - case ENVELOPE_TYPE_POOL_REVOKE_OP_ID: - decodedOperationID.revokeId = OperationIDRevokeId.decode(stream); - break; - } - return decodedOperationID; - } - - @Override - public int hashCode() { - return Objects.hashCode(this.id, this.revokeId, this.type); - } - - @Override - public boolean equals(Object object) { - if (!(object instanceof OperationID)) { - return false; - } - - OperationID other = (OperationID) object; - return Objects.equal(this.id, other.id) - && Objects.equal(this.revokeId, other.revokeId) - && Objects.equal(this.type, other.type); - } - - public static class OperationIDId { - public OperationIDId() {} - - private AccountID sourceAccount; - - public AccountID getSourceAccount() { - return this.sourceAccount; - } - - public void setSourceAccount(AccountID value) { - this.sourceAccount = value; - } - - private SequenceNumber seqNum; - - public SequenceNumber getSeqNum() { - return this.seqNum; - } - - public void setSeqNum(SequenceNumber value) { - this.seqNum = value; - } - - private Uint32 opNum; - - public Uint32 getOpNum() { - return this.opNum; - } - - public void setOpNum(Uint32 value) { - this.opNum = value; - } - - public static void encode(XdrDataOutputStream stream, OperationIDId encodedOperationIDId) - throws IOException { - AccountID.encode(stream, encodedOperationIDId.sourceAccount); - SequenceNumber.encode(stream, encodedOperationIDId.seqNum); - Uint32.encode(stream, encodedOperationIDId.opNum); - } - - public void encode(XdrDataOutputStream stream) throws IOException { - encode(stream, this); - } - - public static OperationIDId decode(XdrDataInputStream stream) throws IOException { - OperationIDId decodedOperationIDId = new OperationIDId(); - decodedOperationIDId.sourceAccount = AccountID.decode(stream); - decodedOperationIDId.seqNum = SequenceNumber.decode(stream); - decodedOperationIDId.opNum = Uint32.decode(stream); - return decodedOperationIDId; - } - - @Override - public int hashCode() { - return Objects.hashCode(this.sourceAccount, this.seqNum, this.opNum); - } - - @Override - public boolean equals(Object object) { - if (!(object instanceof OperationIDId)) { - return false; - } - - OperationIDId other = (OperationIDId) object; - return Objects.equal(this.sourceAccount, other.sourceAccount) - && Objects.equal(this.seqNum, other.seqNum) - && Objects.equal(this.opNum, other.opNum); - } - - public static final class Builder { - private AccountID sourceAccount; - private SequenceNumber seqNum; - private Uint32 opNum; - - public Builder sourceAccount(AccountID sourceAccount) { - this.sourceAccount = sourceAccount; - return this; - } - - public Builder seqNum(SequenceNumber seqNum) { - this.seqNum = seqNum; - return this; - } - - public Builder opNum(Uint32 opNum) { - this.opNum = opNum; - return this; - } - - public OperationIDId build() { - OperationIDId val = new OperationIDId(); - val.setSourceAccount(sourceAccount); - val.setSeqNum(seqNum); - val.setOpNum(opNum); - return val; - } - } - } - - public static class OperationIDRevokeId { - public OperationIDRevokeId() {} - - private AccountID sourceAccount; - - public AccountID getSourceAccount() { - return this.sourceAccount; - } - - public void setSourceAccount(AccountID value) { - this.sourceAccount = value; - } - - private SequenceNumber seqNum; - - public SequenceNumber getSeqNum() { - return this.seqNum; - } - - public void setSeqNum(SequenceNumber value) { - this.seqNum = value; - } - - private Uint32 opNum; - - public Uint32 getOpNum() { - return this.opNum; - } - - public void setOpNum(Uint32 value) { - this.opNum = value; - } - - private PoolID liquidityPoolID; - - public PoolID getLiquidityPoolID() { - return this.liquidityPoolID; - } - - public void setLiquidityPoolID(PoolID value) { - this.liquidityPoolID = value; - } - - private Asset asset; - - public Asset getAsset() { - return this.asset; - } - - public void setAsset(Asset value) { - this.asset = value; - } - - public static void encode( - XdrDataOutputStream stream, OperationIDRevokeId encodedOperationIDRevokeId) - throws IOException { - AccountID.encode(stream, encodedOperationIDRevokeId.sourceAccount); - SequenceNumber.encode(stream, encodedOperationIDRevokeId.seqNum); - Uint32.encode(stream, encodedOperationIDRevokeId.opNum); - PoolID.encode(stream, encodedOperationIDRevokeId.liquidityPoolID); - Asset.encode(stream, encodedOperationIDRevokeId.asset); - } - - public void encode(XdrDataOutputStream stream) throws IOException { - encode(stream, this); - } - - public static OperationIDRevokeId decode(XdrDataInputStream stream) throws IOException { - OperationIDRevokeId decodedOperationIDRevokeId = new OperationIDRevokeId(); - decodedOperationIDRevokeId.sourceAccount = AccountID.decode(stream); - decodedOperationIDRevokeId.seqNum = SequenceNumber.decode(stream); - decodedOperationIDRevokeId.opNum = Uint32.decode(stream); - decodedOperationIDRevokeId.liquidityPoolID = PoolID.decode(stream); - decodedOperationIDRevokeId.asset = Asset.decode(stream); - return decodedOperationIDRevokeId; - } - - @Override - public int hashCode() { - return Objects.hashCode( - this.sourceAccount, this.seqNum, this.opNum, this.liquidityPoolID, this.asset); - } - - @Override - public boolean equals(Object object) { - if (!(object instanceof OperationIDRevokeId)) { - return false; - } - - OperationIDRevokeId other = (OperationIDRevokeId) object; - return Objects.equal(this.sourceAccount, other.sourceAccount) - && Objects.equal(this.seqNum, other.seqNum) - && Objects.equal(this.opNum, other.opNum) - && Objects.equal(this.liquidityPoolID, other.liquidityPoolID) - && Objects.equal(this.asset, other.asset); - } - - public static final class Builder { - private AccountID sourceAccount; - private SequenceNumber seqNum; - private Uint32 opNum; - private PoolID liquidityPoolID; - private Asset asset; - - public Builder sourceAccount(AccountID sourceAccount) { - this.sourceAccount = sourceAccount; - return this; - } - - public Builder seqNum(SequenceNumber seqNum) { - this.seqNum = seqNum; - return this; - } - - public Builder opNum(Uint32 opNum) { - this.opNum = opNum; - return this; - } - - public Builder liquidityPoolID(PoolID liquidityPoolID) { - this.liquidityPoolID = liquidityPoolID; - return this; - } - - public Builder asset(Asset asset) { - this.asset = asset; - return this; - } - - public OperationIDRevokeId build() { - OperationIDRevokeId val = new OperationIDRevokeId(); - val.setSourceAccount(sourceAccount); - val.setSeqNum(seqNum); - val.setOpNum(opNum); - val.setLiquidityPoolID(liquidityPoolID); - val.setAsset(asset); - return val; - } - } - } -} diff --git a/src/main/java/org/stellar/sdk/xdr/OperationMeta.java b/src/main/java/org/stellar/sdk/xdr/OperationMeta.java index 7b77f26fb..7ee0e0cc0 100644 --- a/src/main/java/org/stellar/sdk/xdr/OperationMeta.java +++ b/src/main/java/org/stellar/sdk/xdr/OperationMeta.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -67,7 +69,7 @@ public Builder changes(LedgerEntryChanges changes) { public OperationMeta build() { OperationMeta val = new OperationMeta(); - val.setChanges(changes); + val.setChanges(this.changes); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/OperationResult.java b/src/main/java/org/stellar/sdk/xdr/OperationResult.java index e91494126..3401ae422 100644 --- a/src/main/java/org/stellar/sdk/xdr/OperationResult.java +++ b/src/main/java/org/stellar/sdk/xdr/OperationResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -61,9 +63,20 @@ // LiquidityPoolDepositResult liquidityPoolDepositResult; // case LIQUIDITY_POOL_WITHDRAW: // LiquidityPoolWithdrawResult liquidityPoolWithdrawResult; +// case INVOKE_HOST_FUNCTION: +// InvokeHostFunctionResult invokeHostFunctionResult; +// case BUMP_FOOTPRINT_EXPIRATION: +// BumpFootprintExpirationResult bumpFootprintExpirationResult; +// case RESTORE_FOOTPRINT: +// RestoreFootprintResult restoreFootprintResult; // } // tr; -// default: +// case opBAD_AUTH: +// case opNO_ACCOUNT: +// case opNOT_SUPPORTED: +// case opTOO_MANY_SUBENTRIES: +// case opEXCEEDED_WORK_LIMIT: +// case opTOO_MANY_SPONSORING: // void; // }; @@ -108,7 +121,7 @@ public Builder tr(OperationResultTr tr) { public OperationResult build() { OperationResult val = new OperationResult(); val.setDiscriminant(discriminant); - val.setTr(tr); + val.setTr(this.tr); return val; } } @@ -122,7 +135,12 @@ public static void encode(XdrDataOutputStream stream, OperationResult encodedOpe case opINNER: OperationResultTr.encode(stream, encodedOperationResult.tr); break; - default: + case opBAD_AUTH: + case opNO_ACCOUNT: + case opNOT_SUPPORTED: + case opTOO_MANY_SUBENTRIES: + case opEXCEEDED_WORK_LIMIT: + case opTOO_MANY_SPONSORING: break; } } @@ -139,7 +157,12 @@ public static OperationResult decode(XdrDataInputStream stream) throws IOExcepti case opINNER: decodedOperationResult.tr = OperationResultTr.decode(stream); break; - default: + case opBAD_AUTH: + case opNO_ACCOUNT: + case opNOT_SUPPORTED: + case opTOO_MANY_SUBENTRIES: + case opEXCEEDED_WORK_LIMIT: + case opTOO_MANY_SPONSORING: break; } return decodedOperationResult; @@ -413,6 +436,36 @@ public void setLiquidityPoolWithdrawResult(LiquidityPoolWithdrawResult value) { this.liquidityPoolWithdrawResult = value; } + private InvokeHostFunctionResult invokeHostFunctionResult; + + public InvokeHostFunctionResult getInvokeHostFunctionResult() { + return this.invokeHostFunctionResult; + } + + public void setInvokeHostFunctionResult(InvokeHostFunctionResult value) { + this.invokeHostFunctionResult = value; + } + + private BumpFootprintExpirationResult bumpFootprintExpirationResult; + + public BumpFootprintExpirationResult getBumpFootprintExpirationResult() { + return this.bumpFootprintExpirationResult; + } + + public void setBumpFootprintExpirationResult(BumpFootprintExpirationResult value) { + this.bumpFootprintExpirationResult = value; + } + + private RestoreFootprintResult restoreFootprintResult; + + public RestoreFootprintResult getRestoreFootprintResult() { + return this.restoreFootprintResult; + } + + public void setRestoreFootprintResult(RestoreFootprintResult value) { + this.restoreFootprintResult = value; + } + public static final class Builder { private OperationType discriminant; private CreateAccountResult createAccountResult; @@ -439,6 +492,9 @@ public static final class Builder { private SetTrustLineFlagsResult setTrustLineFlagsResult; private LiquidityPoolDepositResult liquidityPoolDepositResult; private LiquidityPoolWithdrawResult liquidityPoolWithdrawResult; + private InvokeHostFunctionResult invokeHostFunctionResult; + private BumpFootprintExpirationResult bumpFootprintExpirationResult; + private RestoreFootprintResult restoreFootprintResult; public Builder discriminant(OperationType discriminant) { this.discriminant = discriminant; @@ -575,33 +631,52 @@ public Builder liquidityPoolWithdrawResult( return this; } + public Builder invokeHostFunctionResult(InvokeHostFunctionResult invokeHostFunctionResult) { + this.invokeHostFunctionResult = invokeHostFunctionResult; + return this; + } + + public Builder bumpFootprintExpirationResult( + BumpFootprintExpirationResult bumpFootprintExpirationResult) { + this.bumpFootprintExpirationResult = bumpFootprintExpirationResult; + return this; + } + + public Builder restoreFootprintResult(RestoreFootprintResult restoreFootprintResult) { + this.restoreFootprintResult = restoreFootprintResult; + return this; + } + public OperationResultTr build() { OperationResultTr val = new OperationResultTr(); val.setDiscriminant(discriminant); - val.setCreateAccountResult(createAccountResult); - val.setPaymentResult(paymentResult); - val.setPathPaymentStrictReceiveResult(pathPaymentStrictReceiveResult); - val.setManageSellOfferResult(manageSellOfferResult); - val.setCreatePassiveSellOfferResult(createPassiveSellOfferResult); - val.setSetOptionsResult(setOptionsResult); - val.setChangeTrustResult(changeTrustResult); - val.setAllowTrustResult(allowTrustResult); - val.setAccountMergeResult(accountMergeResult); - val.setInflationResult(inflationResult); - val.setManageDataResult(manageDataResult); - val.setBumpSeqResult(bumpSeqResult); - val.setManageBuyOfferResult(manageBuyOfferResult); - val.setPathPaymentStrictSendResult(pathPaymentStrictSendResult); - val.setCreateClaimableBalanceResult(createClaimableBalanceResult); - val.setClaimClaimableBalanceResult(claimClaimableBalanceResult); - val.setBeginSponsoringFutureReservesResult(beginSponsoringFutureReservesResult); - val.setEndSponsoringFutureReservesResult(endSponsoringFutureReservesResult); - val.setRevokeSponsorshipResult(revokeSponsorshipResult); - val.setClawbackResult(clawbackResult); - val.setClawbackClaimableBalanceResult(clawbackClaimableBalanceResult); - val.setSetTrustLineFlagsResult(setTrustLineFlagsResult); - val.setLiquidityPoolDepositResult(liquidityPoolDepositResult); - val.setLiquidityPoolWithdrawResult(liquidityPoolWithdrawResult); + val.setCreateAccountResult(this.createAccountResult); + val.setPaymentResult(this.paymentResult); + val.setPathPaymentStrictReceiveResult(this.pathPaymentStrictReceiveResult); + val.setManageSellOfferResult(this.manageSellOfferResult); + val.setCreatePassiveSellOfferResult(this.createPassiveSellOfferResult); + val.setSetOptionsResult(this.setOptionsResult); + val.setChangeTrustResult(this.changeTrustResult); + val.setAllowTrustResult(this.allowTrustResult); + val.setAccountMergeResult(this.accountMergeResult); + val.setInflationResult(this.inflationResult); + val.setManageDataResult(this.manageDataResult); + val.setBumpSeqResult(this.bumpSeqResult); + val.setManageBuyOfferResult(this.manageBuyOfferResult); + val.setPathPaymentStrictSendResult(this.pathPaymentStrictSendResult); + val.setCreateClaimableBalanceResult(this.createClaimableBalanceResult); + val.setClaimClaimableBalanceResult(this.claimClaimableBalanceResult); + val.setBeginSponsoringFutureReservesResult(this.beginSponsoringFutureReservesResult); + val.setEndSponsoringFutureReservesResult(this.endSponsoringFutureReservesResult); + val.setRevokeSponsorshipResult(this.revokeSponsorshipResult); + val.setClawbackResult(this.clawbackResult); + val.setClawbackClaimableBalanceResult(this.clawbackClaimableBalanceResult); + val.setSetTrustLineFlagsResult(this.setTrustLineFlagsResult); + val.setLiquidityPoolDepositResult(this.liquidityPoolDepositResult); + val.setLiquidityPoolWithdrawResult(this.liquidityPoolWithdrawResult); + val.setInvokeHostFunctionResult(this.invokeHostFunctionResult); + val.setBumpFootprintExpirationResult(this.bumpFootprintExpirationResult); + val.setRestoreFootprintResult(this.restoreFootprintResult); return val; } } @@ -694,6 +769,17 @@ public static void encode( LiquidityPoolWithdrawResult.encode( stream, encodedOperationResultTr.liquidityPoolWithdrawResult); break; + case INVOKE_HOST_FUNCTION: + InvokeHostFunctionResult.encode( + stream, encodedOperationResultTr.invokeHostFunctionResult); + break; + case BUMP_FOOTPRINT_EXPIRATION: + BumpFootprintExpirationResult.encode( + stream, encodedOperationResultTr.bumpFootprintExpirationResult); + break; + case RESTORE_FOOTPRINT: + RestoreFootprintResult.encode(stream, encodedOperationResultTr.restoreFootprintResult); + break; } } @@ -788,6 +874,17 @@ public static OperationResultTr decode(XdrDataInputStream stream) throws IOExcep decodedOperationResultTr.liquidityPoolWithdrawResult = LiquidityPoolWithdrawResult.decode(stream); break; + case INVOKE_HOST_FUNCTION: + decodedOperationResultTr.invokeHostFunctionResult = + InvokeHostFunctionResult.decode(stream); + break; + case BUMP_FOOTPRINT_EXPIRATION: + decodedOperationResultTr.bumpFootprintExpirationResult = + BumpFootprintExpirationResult.decode(stream); + break; + case RESTORE_FOOTPRINT: + decodedOperationResultTr.restoreFootprintResult = RestoreFootprintResult.decode(stream); + break; } return decodedOperationResultTr; } @@ -819,6 +916,9 @@ public int hashCode() { this.setTrustLineFlagsResult, this.liquidityPoolDepositResult, this.liquidityPoolWithdrawResult, + this.invokeHostFunctionResult, + this.bumpFootprintExpirationResult, + this.restoreFootprintResult, this.type); } @@ -857,6 +957,9 @@ public boolean equals(Object object) { && Objects.equal(this.setTrustLineFlagsResult, other.setTrustLineFlagsResult) && Objects.equal(this.liquidityPoolDepositResult, other.liquidityPoolDepositResult) && Objects.equal(this.liquidityPoolWithdrawResult, other.liquidityPoolWithdrawResult) + && Objects.equal(this.invokeHostFunctionResult, other.invokeHostFunctionResult) + && Objects.equal(this.bumpFootprintExpirationResult, other.bumpFootprintExpirationResult) + && Objects.equal(this.restoreFootprintResult, other.restoreFootprintResult) && Objects.equal(this.type, other.type); } } diff --git a/src/main/java/org/stellar/sdk/xdr/OperationResultCode.java b/src/main/java/org/stellar/sdk/xdr/OperationResultCode.java index e4ddbda09..6f82a29a1 100644 --- a/src/main/java/org/stellar/sdk/xdr/OperationResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/OperationResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/OperationType.java b/src/main/java/org/stellar/sdk/xdr/OperationType.java index 3117d42da..0acb5fcc1 100644 --- a/src/main/java/org/stellar/sdk/xdr/OperationType.java +++ b/src/main/java/org/stellar/sdk/xdr/OperationType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ @@ -32,7 +34,10 @@ // CLAWBACK_CLAIMABLE_BALANCE = 20, // SET_TRUST_LINE_FLAGS = 21, // LIQUIDITY_POOL_DEPOSIT = 22, -// LIQUIDITY_POOL_WITHDRAW = 23 +// LIQUIDITY_POOL_WITHDRAW = 23, +// INVOKE_HOST_FUNCTION = 24, +// BUMP_FOOTPRINT_EXPIRATION = 25, +// RESTORE_FOOTPRINT = 26 // }; // =========================================================================== @@ -61,6 +66,9 @@ public enum OperationType implements XdrElement { SET_TRUST_LINE_FLAGS(21), LIQUIDITY_POOL_DEPOSIT(22), LIQUIDITY_POOL_WITHDRAW(23), + INVOKE_HOST_FUNCTION(24), + BUMP_FOOTPRINT_EXPIRATION(25), + RESTORE_FOOTPRINT(26), ; private int mValue; @@ -123,6 +131,12 @@ public static OperationType decode(XdrDataInputStream stream) throws IOException return LIQUIDITY_POOL_DEPOSIT; case 23: return LIQUIDITY_POOL_WITHDRAW; + case 24: + return INVOKE_HOST_FUNCTION; + case 25: + return BUMP_FOOTPRINT_EXPIRATION; + case 26: + return RESTORE_FOOTPRINT; default: throw new RuntimeException("Unknown enum value: " + value); } diff --git a/src/main/java/org/stellar/sdk/xdr/PathPaymentResult.java b/src/main/java/org/stellar/sdk/xdr/PathPaymentResult.java deleted file mode 100644 index d70a90d0e..000000000 --- a/src/main/java/org/stellar/sdk/xdr/PathPaymentResult.java +++ /dev/null @@ -1,171 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -package org.stellar.sdk.xdr; - -import com.google.common.base.Objects; -import java.io.IOException; -import java.util.Arrays; - -// === xdr source ============================================================ - -// union PathPaymentResult switch (PathPaymentResultCode code) -// { -// case PATH_PAYMENT_SUCCESS: -// struct -// { -// ClaimOfferAtom offers<>; -// SimplePaymentResult last; -// } success; -// case PATH_PAYMENT_NO_ISSUER: -// Asset noIssuer; // the asset that caused the error -// default: -// void; -// }; - -// =========================================================================== -public class PathPaymentResult { - public PathPaymentResult() {} - - PathPaymentResultCode code; - - public PathPaymentResultCode getDiscriminant() { - return this.code; - } - - public void setDiscriminant(PathPaymentResultCode value) { - this.code = value; - } - - private PathPaymentResultSuccess success; - - public PathPaymentResultSuccess getSuccess() { - return this.success; - } - - public void setSuccess(PathPaymentResultSuccess value) { - this.success = value; - } - - private Asset noIssuer; - - public Asset getNoIssuer() { - return this.noIssuer; - } - - public void setNoIssuer(Asset value) { - this.noIssuer = value; - } - - public static void encode(XdrDataOutputStream stream, PathPaymentResult encodedPathPaymentResult) - throws IOException { - // Xdrgen::AST::Identifier - // PathPaymentResultCode - stream.writeInt(encodedPathPaymentResult.getDiscriminant().getValue()); - switch (encodedPathPaymentResult.getDiscriminant()) { - case PATH_PAYMENT_SUCCESS: - PathPaymentResultSuccess.encode(stream, encodedPathPaymentResult.success); - break; - case PATH_PAYMENT_NO_ISSUER: - Asset.encode(stream, encodedPathPaymentResult.noIssuer); - break; - default: - break; - } - } - - public static PathPaymentResult decode(XdrDataInputStream stream) throws IOException { - PathPaymentResult decodedPathPaymentResult = new PathPaymentResult(); - PathPaymentResultCode discriminant = PathPaymentResultCode.decode(stream); - decodedPathPaymentResult.setDiscriminant(discriminant); - switch (decodedPathPaymentResult.getDiscriminant()) { - case PATH_PAYMENT_SUCCESS: - decodedPathPaymentResult.success = PathPaymentResultSuccess.decode(stream); - break; - case PATH_PAYMENT_NO_ISSUER: - decodedPathPaymentResult.noIssuer = Asset.decode(stream); - break; - default: - break; - } - return decodedPathPaymentResult; - } - - @Override - public int hashCode() { - return Objects.hashCode(this.success, this.noIssuer, this.code); - } - - @Override - public boolean equals(Object object) { - if (!(object instanceof PathPaymentResult)) { - return false; - } - - PathPaymentResult other = (PathPaymentResult) object; - return Objects.equal(this.success, other.success) - && Objects.equal(this.noIssuer, other.noIssuer) - && Objects.equal(this.code, other.code); - } - - public static class PathPaymentResultSuccess { - public PathPaymentResultSuccess() {} - - private ClaimOfferAtom[] offers; - - public ClaimOfferAtom[] getOffers() { - return this.offers; - } - - public void setOffers(ClaimOfferAtom[] value) { - this.offers = value; - } - - private SimplePaymentResult last; - - public SimplePaymentResult getLast() { - return this.last; - } - - public void setLast(SimplePaymentResult value) { - this.last = value; - } - - public static void encode( - XdrDataOutputStream stream, PathPaymentResultSuccess encodedPathPaymentResultSuccess) - throws IOException { - int offerssize = encodedPathPaymentResultSuccess.getOffers().length; - stream.writeInt(offerssize); - for (int i = 0; i < offerssize; i++) { - ClaimOfferAtom.encode(stream, encodedPathPaymentResultSuccess.offers[i]); - } - SimplePaymentResult.encode(stream, encodedPathPaymentResultSuccess.last); - } - - public static PathPaymentResultSuccess decode(XdrDataInputStream stream) throws IOException { - PathPaymentResultSuccess decodedPathPaymentResultSuccess = new PathPaymentResultSuccess(); - int offerssize = stream.readInt(); - decodedPathPaymentResultSuccess.offers = new ClaimOfferAtom[offerssize]; - for (int i = 0; i < offerssize; i++) { - decodedPathPaymentResultSuccess.offers[i] = ClaimOfferAtom.decode(stream); - } - decodedPathPaymentResultSuccess.last = SimplePaymentResult.decode(stream); - return decodedPathPaymentResultSuccess; - } - - @Override - public int hashCode() { - return Objects.hashCode(Arrays.hashCode(this.offers), this.last); - } - - @Override - public boolean equals(Object object) { - if (!(object instanceof PathPaymentResultSuccess)) { - return false; - } - - PathPaymentResultSuccess other = (PathPaymentResultSuccess) object; - return Arrays.equals(this.offers, other.offers) && Objects.equal(this.last, other.last); - } - } -} diff --git a/src/main/java/org/stellar/sdk/xdr/PathPaymentResultCode.java b/src/main/java/org/stellar/sdk/xdr/PathPaymentResultCode.java deleted file mode 100644 index a696e4236..000000000 --- a/src/main/java/org/stellar/sdk/xdr/PathPaymentResultCode.java +++ /dev/null @@ -1,93 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -package org.stellar.sdk.xdr; - -import java.io.IOException; - -// === xdr source ============================================================ - -// enum PathPaymentResultCode -// { -// // codes considered as "success" for the operation -// PATH_PAYMENT_SUCCESS = 0, // success -// -// // codes considered as "failure" for the operation -// PATH_PAYMENT_MALFORMED = -1, // bad input -// PATH_PAYMENT_UNDERFUNDED = -2, // not enough funds in source account -// PATH_PAYMENT_SRC_NO_TRUST = -3, // no trust line on source account -// PATH_PAYMENT_SRC_NOT_AUTHORIZED = -4, // source not authorized to transfer -// PATH_PAYMENT_NO_DESTINATION = -5, // destination account does not exist -// PATH_PAYMENT_NO_TRUST = -6, // dest missing a trust line for asset -// PATH_PAYMENT_NOT_AUTHORIZED = -7, // dest not authorized to hold asset -// PATH_PAYMENT_LINE_FULL = -8, // dest would go above their limit -// PATH_PAYMENT_NO_ISSUER = -9, // missing issuer on one asset -// PATH_PAYMENT_TOO_FEW_OFFERS = -10, // not enough offers to satisfy path -// PATH_PAYMENT_OFFER_CROSS_SELF = -11, // would cross one of its own offers -// PATH_PAYMENT_OVER_SENDMAX = -12 // could not satisfy sendmax -// }; - -// =========================================================================== -public enum PathPaymentResultCode { - PATH_PAYMENT_SUCCESS(0), - PATH_PAYMENT_MALFORMED(-1), - PATH_PAYMENT_UNDERFUNDED(-2), - PATH_PAYMENT_SRC_NO_TRUST(-3), - PATH_PAYMENT_SRC_NOT_AUTHORIZED(-4), - PATH_PAYMENT_NO_DESTINATION(-5), - PATH_PAYMENT_NO_TRUST(-6), - PATH_PAYMENT_NOT_AUTHORIZED(-7), - PATH_PAYMENT_LINE_FULL(-8), - PATH_PAYMENT_NO_ISSUER(-9), - PATH_PAYMENT_TOO_FEW_OFFERS(-10), - PATH_PAYMENT_OFFER_CROSS_SELF(-11), - PATH_PAYMENT_OVER_SENDMAX(-12), - ; - private int mValue; - - PathPaymentResultCode(int value) { - mValue = value; - } - - public int getValue() { - return mValue; - } - - static PathPaymentResultCode decode(XdrDataInputStream stream) throws IOException { - int value = stream.readInt(); - switch (value) { - case 0: - return PATH_PAYMENT_SUCCESS; - case -1: - return PATH_PAYMENT_MALFORMED; - case -2: - return PATH_PAYMENT_UNDERFUNDED; - case -3: - return PATH_PAYMENT_SRC_NO_TRUST; - case -4: - return PATH_PAYMENT_SRC_NOT_AUTHORIZED; - case -5: - return PATH_PAYMENT_NO_DESTINATION; - case -6: - return PATH_PAYMENT_NO_TRUST; - case -7: - return PATH_PAYMENT_NOT_AUTHORIZED; - case -8: - return PATH_PAYMENT_LINE_FULL; - case -9: - return PATH_PAYMENT_NO_ISSUER; - case -10: - return PATH_PAYMENT_TOO_FEW_OFFERS; - case -11: - return PATH_PAYMENT_OFFER_CROSS_SELF; - case -12: - return PATH_PAYMENT_OVER_SENDMAX; - default: - throw new RuntimeException("Unknown enum value: " + value); - } - } - - static void encode(XdrDataOutputStream stream, PathPaymentResultCode value) throws IOException { - stream.writeInt(value.getValue()); - } -} diff --git a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveOp.java b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveOp.java index 29e753770..86ae96832 100644 --- a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveOp.java +++ b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -187,12 +189,12 @@ public Builder path(Asset[] path) { public PathPaymentStrictReceiveOp build() { PathPaymentStrictReceiveOp val = new PathPaymentStrictReceiveOp(); - val.setSendAsset(sendAsset); - val.setSendMax(sendMax); - val.setDestination(destination); - val.setDestAsset(destAsset); - val.setDestAmount(destAmount); - val.setPath(path); + val.setSendAsset(this.sendAsset); + val.setSendMax(this.sendMax); + val.setDestination(this.destination); + val.setDestAsset(this.destAsset); + val.setDestAmount(this.destAmount); + val.setPath(this.path); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResult.java b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResult.java index 6ca2d6e66..331b8a79f 100644 --- a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResult.java +++ b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -18,9 +20,20 @@ // ClaimAtom offers<>; // SimplePaymentResult last; // } success; +// case PATH_PAYMENT_STRICT_RECEIVE_MALFORMED: +// case PATH_PAYMENT_STRICT_RECEIVE_UNDERFUNDED: +// case PATH_PAYMENT_STRICT_RECEIVE_SRC_NO_TRUST: +// case PATH_PAYMENT_STRICT_RECEIVE_SRC_NOT_AUTHORIZED: +// case PATH_PAYMENT_STRICT_RECEIVE_NO_DESTINATION: +// case PATH_PAYMENT_STRICT_RECEIVE_NO_TRUST: +// case PATH_PAYMENT_STRICT_RECEIVE_NOT_AUTHORIZED: +// case PATH_PAYMENT_STRICT_RECEIVE_LINE_FULL: +// void; // case PATH_PAYMENT_STRICT_RECEIVE_NO_ISSUER: // Asset noIssuer; // the asset that caused the error -// default: +// case PATH_PAYMENT_STRICT_RECEIVE_TOO_FEW_OFFERS: +// case PATH_PAYMENT_STRICT_RECEIVE_OFFER_CROSS_SELF: +// case PATH_PAYMENT_STRICT_RECEIVE_OVER_SENDMAX: // void; // }; @@ -81,8 +94,8 @@ public Builder noIssuer(Asset noIssuer) { public PathPaymentStrictReceiveResult build() { PathPaymentStrictReceiveResult val = new PathPaymentStrictReceiveResult(); val.setDiscriminant(discriminant); - val.setSuccess(success); - val.setNoIssuer(noIssuer); + val.setSuccess(this.success); + val.setNoIssuer(this.noIssuer); return val; } } @@ -99,10 +112,21 @@ public static void encode( PathPaymentStrictReceiveResultSuccess.encode( stream, encodedPathPaymentStrictReceiveResult.success); break; + case PATH_PAYMENT_STRICT_RECEIVE_MALFORMED: + case PATH_PAYMENT_STRICT_RECEIVE_UNDERFUNDED: + case PATH_PAYMENT_STRICT_RECEIVE_SRC_NO_TRUST: + case PATH_PAYMENT_STRICT_RECEIVE_SRC_NOT_AUTHORIZED: + case PATH_PAYMENT_STRICT_RECEIVE_NO_DESTINATION: + case PATH_PAYMENT_STRICT_RECEIVE_NO_TRUST: + case PATH_PAYMENT_STRICT_RECEIVE_NOT_AUTHORIZED: + case PATH_PAYMENT_STRICT_RECEIVE_LINE_FULL: + break; case PATH_PAYMENT_STRICT_RECEIVE_NO_ISSUER: Asset.encode(stream, encodedPathPaymentStrictReceiveResult.noIssuer); break; - default: + case PATH_PAYMENT_STRICT_RECEIVE_TOO_FEW_OFFERS: + case PATH_PAYMENT_STRICT_RECEIVE_OFFER_CROSS_SELF: + case PATH_PAYMENT_STRICT_RECEIVE_OVER_SENDMAX: break; } } @@ -123,10 +147,21 @@ public static PathPaymentStrictReceiveResult decode(XdrDataInputStream stream) decodedPathPaymentStrictReceiveResult.success = PathPaymentStrictReceiveResultSuccess.decode(stream); break; + case PATH_PAYMENT_STRICT_RECEIVE_MALFORMED: + case PATH_PAYMENT_STRICT_RECEIVE_UNDERFUNDED: + case PATH_PAYMENT_STRICT_RECEIVE_SRC_NO_TRUST: + case PATH_PAYMENT_STRICT_RECEIVE_SRC_NOT_AUTHORIZED: + case PATH_PAYMENT_STRICT_RECEIVE_NO_DESTINATION: + case PATH_PAYMENT_STRICT_RECEIVE_NO_TRUST: + case PATH_PAYMENT_STRICT_RECEIVE_NOT_AUTHORIZED: + case PATH_PAYMENT_STRICT_RECEIVE_LINE_FULL: + break; case PATH_PAYMENT_STRICT_RECEIVE_NO_ISSUER: decodedPathPaymentStrictReceiveResult.noIssuer = Asset.decode(stream); break; - default: + case PATH_PAYMENT_STRICT_RECEIVE_TOO_FEW_OFFERS: + case PATH_PAYMENT_STRICT_RECEIVE_OFFER_CROSS_SELF: + case PATH_PAYMENT_STRICT_RECEIVE_OVER_SENDMAX: break; } return decodedPathPaymentStrictReceiveResult; @@ -232,8 +267,8 @@ public Builder last(SimplePaymentResult last) { public PathPaymentStrictReceiveResultSuccess build() { PathPaymentStrictReceiveResultSuccess val = new PathPaymentStrictReceiveResultSuccess(); - val.setOffers(offers); - val.setLast(last); + val.setOffers(this.offers); + val.setLast(this.last); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResultCode.java b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResultCode.java index 747fef139..00b81e661 100644 --- a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendOp.java b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendOp.java index a48866ec0..a8bcb85ee 100644 --- a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendOp.java +++ b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -187,12 +189,12 @@ public Builder path(Asset[] path) { public PathPaymentStrictSendOp build() { PathPaymentStrictSendOp val = new PathPaymentStrictSendOp(); - val.setSendAsset(sendAsset); - val.setSendAmount(sendAmount); - val.setDestination(destination); - val.setDestAsset(destAsset); - val.setDestMin(destMin); - val.setPath(path); + val.setSendAsset(this.sendAsset); + val.setSendAmount(this.sendAmount); + val.setDestination(this.destination); + val.setDestAsset(this.destAsset); + val.setDestMin(this.destMin); + val.setPath(this.path); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResult.java b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResult.java index f6a651fa2..30411b068 100644 --- a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResult.java +++ b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -17,9 +19,20 @@ // ClaimAtom offers<>; // SimplePaymentResult last; // } success; +// case PATH_PAYMENT_STRICT_SEND_MALFORMED: +// case PATH_PAYMENT_STRICT_SEND_UNDERFUNDED: +// case PATH_PAYMENT_STRICT_SEND_SRC_NO_TRUST: +// case PATH_PAYMENT_STRICT_SEND_SRC_NOT_AUTHORIZED: +// case PATH_PAYMENT_STRICT_SEND_NO_DESTINATION: +// case PATH_PAYMENT_STRICT_SEND_NO_TRUST: +// case PATH_PAYMENT_STRICT_SEND_NOT_AUTHORIZED: +// case PATH_PAYMENT_STRICT_SEND_LINE_FULL: +// void; // case PATH_PAYMENT_STRICT_SEND_NO_ISSUER: // Asset noIssuer; // the asset that caused the error -// default: +// case PATH_PAYMENT_STRICT_SEND_TOO_FEW_OFFERS: +// case PATH_PAYMENT_STRICT_SEND_OFFER_CROSS_SELF: +// case PATH_PAYMENT_STRICT_SEND_UNDER_DESTMIN: // void; // }; @@ -80,8 +93,8 @@ public Builder noIssuer(Asset noIssuer) { public PathPaymentStrictSendResult build() { PathPaymentStrictSendResult val = new PathPaymentStrictSendResult(); val.setDiscriminant(discriminant); - val.setSuccess(success); - val.setNoIssuer(noIssuer); + val.setSuccess(this.success); + val.setNoIssuer(this.noIssuer); return val; } } @@ -97,10 +110,21 @@ public static void encode( PathPaymentStrictSendResultSuccess.encode( stream, encodedPathPaymentStrictSendResult.success); break; + case PATH_PAYMENT_STRICT_SEND_MALFORMED: + case PATH_PAYMENT_STRICT_SEND_UNDERFUNDED: + case PATH_PAYMENT_STRICT_SEND_SRC_NO_TRUST: + case PATH_PAYMENT_STRICT_SEND_SRC_NOT_AUTHORIZED: + case PATH_PAYMENT_STRICT_SEND_NO_DESTINATION: + case PATH_PAYMENT_STRICT_SEND_NO_TRUST: + case PATH_PAYMENT_STRICT_SEND_NOT_AUTHORIZED: + case PATH_PAYMENT_STRICT_SEND_LINE_FULL: + break; case PATH_PAYMENT_STRICT_SEND_NO_ISSUER: Asset.encode(stream, encodedPathPaymentStrictSendResult.noIssuer); break; - default: + case PATH_PAYMENT_STRICT_SEND_TOO_FEW_OFFERS: + case PATH_PAYMENT_STRICT_SEND_OFFER_CROSS_SELF: + case PATH_PAYMENT_STRICT_SEND_UNDER_DESTMIN: break; } } @@ -119,10 +143,21 @@ public static PathPaymentStrictSendResult decode(XdrDataInputStream stream) thro decodedPathPaymentStrictSendResult.success = PathPaymentStrictSendResultSuccess.decode(stream); break; + case PATH_PAYMENT_STRICT_SEND_MALFORMED: + case PATH_PAYMENT_STRICT_SEND_UNDERFUNDED: + case PATH_PAYMENT_STRICT_SEND_SRC_NO_TRUST: + case PATH_PAYMENT_STRICT_SEND_SRC_NOT_AUTHORIZED: + case PATH_PAYMENT_STRICT_SEND_NO_DESTINATION: + case PATH_PAYMENT_STRICT_SEND_NO_TRUST: + case PATH_PAYMENT_STRICT_SEND_NOT_AUTHORIZED: + case PATH_PAYMENT_STRICT_SEND_LINE_FULL: + break; case PATH_PAYMENT_STRICT_SEND_NO_ISSUER: decodedPathPaymentStrictSendResult.noIssuer = Asset.decode(stream); break; - default: + case PATH_PAYMENT_STRICT_SEND_TOO_FEW_OFFERS: + case PATH_PAYMENT_STRICT_SEND_OFFER_CROSS_SELF: + case PATH_PAYMENT_STRICT_SEND_UNDER_DESTMIN: break; } return decodedPathPaymentStrictSendResult; @@ -228,8 +263,8 @@ public Builder last(SimplePaymentResult last) { public PathPaymentStrictSendResultSuccess build() { PathPaymentStrictSendResultSuccess val = new PathPaymentStrictSendResultSuccess(); - val.setOffers(offers); - val.setLast(last); + val.setOffers(this.offers); + val.setLast(this.last); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResultCode.java b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResultCode.java index b36ebc2f5..18b092988 100644 --- a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/PaymentOp.java b/src/main/java/org/stellar/sdk/xdr/PaymentOp.java index 464ad86b2..a1f8f3166 100644 --- a/src/main/java/org/stellar/sdk/xdr/PaymentOp.java +++ b/src/main/java/org/stellar/sdk/xdr/PaymentOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -107,9 +109,9 @@ public Builder amount(Int64 amount) { public PaymentOp build() { PaymentOp val = new PaymentOp(); - val.setDestination(destination); - val.setAsset(asset); - val.setAmount(amount); + val.setDestination(this.destination); + val.setAsset(this.asset); + val.setAmount(this.amount); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/PaymentResult.java b/src/main/java/org/stellar/sdk/xdr/PaymentResult.java index 142c425a4..42893b288 100644 --- a/src/main/java/org/stellar/sdk/xdr/PaymentResult.java +++ b/src/main/java/org/stellar/sdk/xdr/PaymentResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,15 @@ // { // case PAYMENT_SUCCESS: // void; -// default: +// case PAYMENT_MALFORMED: +// case PAYMENT_UNDERFUNDED: +// case PAYMENT_SRC_NO_TRUST: +// case PAYMENT_SRC_NOT_AUTHORIZED: +// case PAYMENT_NO_DESTINATION: +// case PAYMENT_NO_TRUST: +// case PAYMENT_NOT_AUTHORIZED: +// case PAYMENT_LINE_FULL: +// case PAYMENT_NO_ISSUER: // void; // }; @@ -53,7 +63,15 @@ public static void encode(XdrDataOutputStream stream, PaymentResult encodedPayme switch (encodedPaymentResult.getDiscriminant()) { case PAYMENT_SUCCESS: break; - default: + case PAYMENT_MALFORMED: + case PAYMENT_UNDERFUNDED: + case PAYMENT_SRC_NO_TRUST: + case PAYMENT_SRC_NOT_AUTHORIZED: + case PAYMENT_NO_DESTINATION: + case PAYMENT_NO_TRUST: + case PAYMENT_NOT_AUTHORIZED: + case PAYMENT_LINE_FULL: + case PAYMENT_NO_ISSUER: break; } } @@ -69,7 +87,15 @@ public static PaymentResult decode(XdrDataInputStream stream) throws IOException switch (decodedPaymentResult.getDiscriminant()) { case PAYMENT_SUCCESS: break; - default: + case PAYMENT_MALFORMED: + case PAYMENT_UNDERFUNDED: + case PAYMENT_SRC_NO_TRUST: + case PAYMENT_SRC_NOT_AUTHORIZED: + case PAYMENT_NO_DESTINATION: + case PAYMENT_NO_TRUST: + case PAYMENT_NOT_AUTHORIZED: + case PAYMENT_LINE_FULL: + case PAYMENT_NO_ISSUER: break; } return decodedPaymentResult; diff --git a/src/main/java/org/stellar/sdk/xdr/PaymentResultCode.java b/src/main/java/org/stellar/sdk/xdr/PaymentResultCode.java index 358957e37..97c01f829 100644 --- a/src/main/java/org/stellar/sdk/xdr/PaymentResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/PaymentResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/PeerAddress.java b/src/main/java/org/stellar/sdk/xdr/PeerAddress.java index 69b015d18..ca8f24eac 100644 --- a/src/main/java/org/stellar/sdk/xdr/PeerAddress.java +++ b/src/main/java/org/stellar/sdk/xdr/PeerAddress.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -115,9 +117,9 @@ public Builder numFailures(Uint32 numFailures) { public PeerAddress build() { PeerAddress val = new PeerAddress(); - val.setIp(ip); - val.setPort(port); - val.setNumFailures(numFailures); + val.setIp(this.ip); + val.setPort(this.port); + val.setNumFailures(this.numFailures); return val; } } @@ -178,8 +180,8 @@ public Builder ipv6(byte[] ipv6) { public PeerAddressIp build() { PeerAddressIp val = new PeerAddressIp(); val.setDiscriminant(discriminant); - val.setIpv4(ipv4); - val.setIpv6(ipv6); + val.setIpv4(this.ipv4); + val.setIpv6(this.ipv6); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/PeerStatList.java b/src/main/java/org/stellar/sdk/xdr/PeerStatList.java index 0e3b4d7b1..37b0c989e 100644 --- a/src/main/java/org/stellar/sdk/xdr/PeerStatList.java +++ b/src/main/java/org/stellar/sdk/xdr/PeerStatList.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/org/stellar/sdk/xdr/PeerStats.java b/src/main/java/org/stellar/sdk/xdr/PeerStats.java index 25d8cee6e..71b6a49be 100644 --- a/src/main/java/org/stellar/sdk/xdr/PeerStats.java +++ b/src/main/java/org/stellar/sdk/xdr/PeerStats.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -364,21 +366,21 @@ public Builder duplicateFetchMessageRecv(Uint64 duplicateFetchMessageRecv) { public PeerStats build() { PeerStats val = new PeerStats(); - val.setId(id); - val.setVersionStr(versionStr); - val.setMessagesRead(messagesRead); - val.setMessagesWritten(messagesWritten); - val.setBytesRead(bytesRead); - val.setBytesWritten(bytesWritten); - val.setSecondsConnected(secondsConnected); - val.setUniqueFloodBytesRecv(uniqueFloodBytesRecv); - val.setDuplicateFloodBytesRecv(duplicateFloodBytesRecv); - val.setUniqueFetchBytesRecv(uniqueFetchBytesRecv); - val.setDuplicateFetchBytesRecv(duplicateFetchBytesRecv); - val.setUniqueFloodMessageRecv(uniqueFloodMessageRecv); - val.setDuplicateFloodMessageRecv(duplicateFloodMessageRecv); - val.setUniqueFetchMessageRecv(uniqueFetchMessageRecv); - val.setDuplicateFetchMessageRecv(duplicateFetchMessageRecv); + val.setId(this.id); + val.setVersionStr(this.versionStr); + val.setMessagesRead(this.messagesRead); + val.setMessagesWritten(this.messagesWritten); + val.setBytesRead(this.bytesRead); + val.setBytesWritten(this.bytesWritten); + val.setSecondsConnected(this.secondsConnected); + val.setUniqueFloodBytesRecv(this.uniqueFloodBytesRecv); + val.setDuplicateFloodBytesRecv(this.duplicateFloodBytesRecv); + val.setUniqueFetchBytesRecv(this.uniqueFetchBytesRecv); + val.setDuplicateFetchBytesRecv(this.duplicateFetchBytesRecv); + val.setUniqueFloodMessageRecv(this.uniqueFloodMessageRecv); + val.setDuplicateFloodMessageRecv(this.duplicateFloodMessageRecv); + val.setUniqueFetchMessageRecv(this.uniqueFetchMessageRecv); + val.setDuplicateFetchMessageRecv(this.duplicateFetchMessageRecv); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/PersistedSCPState.java b/src/main/java/org/stellar/sdk/xdr/PersistedSCPState.java new file mode 100644 index 000000000..06fdf90ce --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/PersistedSCPState.java @@ -0,0 +1,134 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union PersistedSCPState switch (int v) +// { +// case 0: +// PersistedSCPStateV0 v0; +// case 1: +// PersistedSCPStateV1 v1; +// }; + +// =========================================================================== +public class PersistedSCPState implements XdrElement { + public PersistedSCPState() {} + + Integer v; + + public Integer getDiscriminant() { + return this.v; + } + + public void setDiscriminant(Integer value) { + this.v = value; + } + + private PersistedSCPStateV0 v0; + + public PersistedSCPStateV0 getV0() { + return this.v0; + } + + public void setV0(PersistedSCPStateV0 value) { + this.v0 = value; + } + + private PersistedSCPStateV1 v1; + + public PersistedSCPStateV1 getV1() { + return this.v1; + } + + public void setV1(PersistedSCPStateV1 value) { + this.v1 = value; + } + + public static final class Builder { + private Integer discriminant; + private PersistedSCPStateV0 v0; + private PersistedSCPStateV1 v1; + + public Builder discriminant(Integer discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder v0(PersistedSCPStateV0 v0) { + this.v0 = v0; + return this; + } + + public Builder v1(PersistedSCPStateV1 v1) { + this.v1 = v1; + return this; + } + + public PersistedSCPState build() { + PersistedSCPState val = new PersistedSCPState(); + val.setDiscriminant(discriminant); + val.setV0(this.v0); + val.setV1(this.v1); + return val; + } + } + + public static void encode(XdrDataOutputStream stream, PersistedSCPState encodedPersistedSCPState) + throws IOException { + // Xdrgen::AST::Typespecs::Int + // Integer + stream.writeInt(encodedPersistedSCPState.getDiscriminant().intValue()); + switch (encodedPersistedSCPState.getDiscriminant()) { + case 0: + PersistedSCPStateV0.encode(stream, encodedPersistedSCPState.v0); + break; + case 1: + PersistedSCPStateV1.encode(stream, encodedPersistedSCPState.v1); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static PersistedSCPState decode(XdrDataInputStream stream) throws IOException { + PersistedSCPState decodedPersistedSCPState = new PersistedSCPState(); + Integer discriminant = stream.readInt(); + decodedPersistedSCPState.setDiscriminant(discriminant); + switch (decodedPersistedSCPState.getDiscriminant()) { + case 0: + decodedPersistedSCPState.v0 = PersistedSCPStateV0.decode(stream); + break; + case 1: + decodedPersistedSCPState.v1 = PersistedSCPStateV1.decode(stream); + break; + } + return decodedPersistedSCPState; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.v0, this.v1, this.v); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof PersistedSCPState)) { + return false; + } + + PersistedSCPState other = (PersistedSCPState) object; + return Objects.equal(this.v0, other.v0) + && Objects.equal(this.v1, other.v1) + && Objects.equal(this.v, other.v); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV0.java b/src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV0.java new file mode 100644 index 000000000..307f3b206 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV0.java @@ -0,0 +1,147 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct PersistedSCPStateV0 +// { +// SCPEnvelope scpEnvelopes<>; +// SCPQuorumSet quorumSets<>; +// StoredTransactionSet txSets<>; +// }; + +// =========================================================================== +public class PersistedSCPStateV0 implements XdrElement { + public PersistedSCPStateV0() {} + + private SCPEnvelope[] scpEnvelopes; + + public SCPEnvelope[] getScpEnvelopes() { + return this.scpEnvelopes; + } + + public void setScpEnvelopes(SCPEnvelope[] value) { + this.scpEnvelopes = value; + } + + private SCPQuorumSet[] quorumSets; + + public SCPQuorumSet[] getQuorumSets() { + return this.quorumSets; + } + + public void setQuorumSets(SCPQuorumSet[] value) { + this.quorumSets = value; + } + + private StoredTransactionSet[] txSets; + + public StoredTransactionSet[] getTxSets() { + return this.txSets; + } + + public void setTxSets(StoredTransactionSet[] value) { + this.txSets = value; + } + + public static void encode( + XdrDataOutputStream stream, PersistedSCPStateV0 encodedPersistedSCPStateV0) + throws IOException { + int scpEnvelopessize = encodedPersistedSCPStateV0.getScpEnvelopes().length; + stream.writeInt(scpEnvelopessize); + for (int i = 0; i < scpEnvelopessize; i++) { + SCPEnvelope.encode(stream, encodedPersistedSCPStateV0.scpEnvelopes[i]); + } + int quorumSetssize = encodedPersistedSCPStateV0.getQuorumSets().length; + stream.writeInt(quorumSetssize); + for (int i = 0; i < quorumSetssize; i++) { + SCPQuorumSet.encode(stream, encodedPersistedSCPStateV0.quorumSets[i]); + } + int txSetssize = encodedPersistedSCPStateV0.getTxSets().length; + stream.writeInt(txSetssize); + for (int i = 0; i < txSetssize; i++) { + StoredTransactionSet.encode(stream, encodedPersistedSCPStateV0.txSets[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static PersistedSCPStateV0 decode(XdrDataInputStream stream) throws IOException { + PersistedSCPStateV0 decodedPersistedSCPStateV0 = new PersistedSCPStateV0(); + int scpEnvelopessize = stream.readInt(); + decodedPersistedSCPStateV0.scpEnvelopes = new SCPEnvelope[scpEnvelopessize]; + for (int i = 0; i < scpEnvelopessize; i++) { + decodedPersistedSCPStateV0.scpEnvelopes[i] = SCPEnvelope.decode(stream); + } + int quorumSetssize = stream.readInt(); + decodedPersistedSCPStateV0.quorumSets = new SCPQuorumSet[quorumSetssize]; + for (int i = 0; i < quorumSetssize; i++) { + decodedPersistedSCPStateV0.quorumSets[i] = SCPQuorumSet.decode(stream); + } + int txSetssize = stream.readInt(); + decodedPersistedSCPStateV0.txSets = new StoredTransactionSet[txSetssize]; + for (int i = 0; i < txSetssize; i++) { + decodedPersistedSCPStateV0.txSets[i] = StoredTransactionSet.decode(stream); + } + return decodedPersistedSCPStateV0; + } + + @Override + public int hashCode() { + return Objects.hashCode( + Arrays.hashCode(this.scpEnvelopes), + Arrays.hashCode(this.quorumSets), + Arrays.hashCode(this.txSets)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof PersistedSCPStateV0)) { + return false; + } + + PersistedSCPStateV0 other = (PersistedSCPStateV0) object; + return Arrays.equals(this.scpEnvelopes, other.scpEnvelopes) + && Arrays.equals(this.quorumSets, other.quorumSets) + && Arrays.equals(this.txSets, other.txSets); + } + + public static final class Builder { + private SCPEnvelope[] scpEnvelopes; + private SCPQuorumSet[] quorumSets; + private StoredTransactionSet[] txSets; + + public Builder scpEnvelopes(SCPEnvelope[] scpEnvelopes) { + this.scpEnvelopes = scpEnvelopes; + return this; + } + + public Builder quorumSets(SCPQuorumSet[] quorumSets) { + this.quorumSets = quorumSets; + return this; + } + + public Builder txSets(StoredTransactionSet[] txSets) { + this.txSets = txSets; + return this; + } + + public PersistedSCPStateV0 build() { + PersistedSCPStateV0 val = new PersistedSCPStateV0(); + val.setScpEnvelopes(this.scpEnvelopes); + val.setQuorumSets(this.quorumSets); + val.setTxSets(this.txSets); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV1.java b/src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV1.java new file mode 100644 index 000000000..1414f2bf7 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV1.java @@ -0,0 +1,116 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct PersistedSCPStateV1 +// { +// // Tx sets are saved separately +// SCPEnvelope scpEnvelopes<>; +// SCPQuorumSet quorumSets<>; +// }; + +// =========================================================================== +public class PersistedSCPStateV1 implements XdrElement { + public PersistedSCPStateV1() {} + + private SCPEnvelope[] scpEnvelopes; + + public SCPEnvelope[] getScpEnvelopes() { + return this.scpEnvelopes; + } + + public void setScpEnvelopes(SCPEnvelope[] value) { + this.scpEnvelopes = value; + } + + private SCPQuorumSet[] quorumSets; + + public SCPQuorumSet[] getQuorumSets() { + return this.quorumSets; + } + + public void setQuorumSets(SCPQuorumSet[] value) { + this.quorumSets = value; + } + + public static void encode( + XdrDataOutputStream stream, PersistedSCPStateV1 encodedPersistedSCPStateV1) + throws IOException { + int scpEnvelopessize = encodedPersistedSCPStateV1.getScpEnvelopes().length; + stream.writeInt(scpEnvelopessize); + for (int i = 0; i < scpEnvelopessize; i++) { + SCPEnvelope.encode(stream, encodedPersistedSCPStateV1.scpEnvelopes[i]); + } + int quorumSetssize = encodedPersistedSCPStateV1.getQuorumSets().length; + stream.writeInt(quorumSetssize); + for (int i = 0; i < quorumSetssize; i++) { + SCPQuorumSet.encode(stream, encodedPersistedSCPStateV1.quorumSets[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static PersistedSCPStateV1 decode(XdrDataInputStream stream) throws IOException { + PersistedSCPStateV1 decodedPersistedSCPStateV1 = new PersistedSCPStateV1(); + int scpEnvelopessize = stream.readInt(); + decodedPersistedSCPStateV1.scpEnvelopes = new SCPEnvelope[scpEnvelopessize]; + for (int i = 0; i < scpEnvelopessize; i++) { + decodedPersistedSCPStateV1.scpEnvelopes[i] = SCPEnvelope.decode(stream); + } + int quorumSetssize = stream.readInt(); + decodedPersistedSCPStateV1.quorumSets = new SCPQuorumSet[quorumSetssize]; + for (int i = 0; i < quorumSetssize; i++) { + decodedPersistedSCPStateV1.quorumSets[i] = SCPQuorumSet.decode(stream); + } + return decodedPersistedSCPStateV1; + } + + @Override + public int hashCode() { + return Objects.hashCode(Arrays.hashCode(this.scpEnvelopes), Arrays.hashCode(this.quorumSets)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof PersistedSCPStateV1)) { + return false; + } + + PersistedSCPStateV1 other = (PersistedSCPStateV1) object; + return Arrays.equals(this.scpEnvelopes, other.scpEnvelopes) + && Arrays.equals(this.quorumSets, other.quorumSets); + } + + public static final class Builder { + private SCPEnvelope[] scpEnvelopes; + private SCPQuorumSet[] quorumSets; + + public Builder scpEnvelopes(SCPEnvelope[] scpEnvelopes) { + this.scpEnvelopes = scpEnvelopes; + return this; + } + + public Builder quorumSets(SCPQuorumSet[] quorumSets) { + this.quorumSets = quorumSets; + return this; + } + + public PersistedSCPStateV1 build() { + PersistedSCPStateV1 val = new PersistedSCPStateV1(); + val.setScpEnvelopes(this.scpEnvelopes); + val.setQuorumSets(this.quorumSets); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/PoolID.java b/src/main/java/org/stellar/sdk/xdr/PoolID.java index 331258e41..230f02888 100644 --- a/src/main/java/org/stellar/sdk/xdr/PoolID.java +++ b/src/main/java/org/stellar/sdk/xdr/PoolID.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; diff --git a/src/main/java/org/stellar/sdk/xdr/PreconditionType.java b/src/main/java/org/stellar/sdk/xdr/PreconditionType.java index f3fe2e325..4f1435880 100644 --- a/src/main/java/org/stellar/sdk/xdr/PreconditionType.java +++ b/src/main/java/org/stellar/sdk/xdr/PreconditionType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/Preconditions.java b/src/main/java/org/stellar/sdk/xdr/Preconditions.java index fd1e44c92..fc34c61c0 100644 --- a/src/main/java/org/stellar/sdk/xdr/Preconditions.java +++ b/src/main/java/org/stellar/sdk/xdr/Preconditions.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -75,8 +77,8 @@ public Builder v2(PreconditionsV2 v2) { public Preconditions build() { Preconditions val = new Preconditions(); val.setDiscriminant(discriminant); - val.setTimeBounds(timeBounds); - val.setV2(v2); + val.setTimeBounds(this.timeBounds); + val.setV2(this.v2); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/PreconditionsV2.java b/src/main/java/org/stellar/sdk/xdr/PreconditionsV2.java index 566540e0a..500576d02 100644 --- a/src/main/java/org/stellar/sdk/xdr/PreconditionsV2.java +++ b/src/main/java/org/stellar/sdk/xdr/PreconditionsV2.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -229,12 +231,12 @@ public Builder extraSigners(SignerKey[] extraSigners) { public PreconditionsV2 build() { PreconditionsV2 val = new PreconditionsV2(); - val.setTimeBounds(timeBounds); - val.setLedgerBounds(ledgerBounds); - val.setMinSeqNum(minSeqNum); - val.setMinSeqAge(minSeqAge); - val.setMinSeqLedgerGap(minSeqLedgerGap); - val.setExtraSigners(extraSigners); + val.setTimeBounds(this.timeBounds); + val.setLedgerBounds(this.ledgerBounds); + val.setMinSeqNum(this.minSeqNum); + val.setMinSeqAge(this.minSeqAge); + val.setMinSeqLedgerGap(this.minSeqLedgerGap); + val.setExtraSigners(this.extraSigners); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/Price.java b/src/main/java/org/stellar/sdk/xdr/Price.java index 5c14702be..0d4794d85 100644 --- a/src/main/java/org/stellar/sdk/xdr/Price.java +++ b/src/main/java/org/stellar/sdk/xdr/Price.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -85,8 +87,8 @@ public Builder d(Int32 d) { public Price build() { Price val = new Price(); - val.setN(n); - val.setD(d); + val.setN(this.n); + val.setD(this.d); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/PublicKey.java b/src/main/java/org/stellar/sdk/xdr/PublicKey.java index eb234db25..cf6fd34f2 100644 --- a/src/main/java/org/stellar/sdk/xdr/PublicKey.java +++ b/src/main/java/org/stellar/sdk/xdr/PublicKey.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -55,7 +57,7 @@ public Builder ed25519(Uint256 ed25519) { public PublicKey build() { PublicKey val = new PublicKey(); val.setDiscriminant(discriminant); - val.setEd25519(ed25519); + val.setEd25519(this.ed25519); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/PublicKeyType.java b/src/main/java/org/stellar/sdk/xdr/PublicKeyType.java index 753384b1b..38655d863 100644 --- a/src/main/java/org/stellar/sdk/xdr/PublicKeyType.java +++ b/src/main/java/org/stellar/sdk/xdr/PublicKeyType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/RestoreFootprintOp.java b/src/main/java/org/stellar/sdk/xdr/RestoreFootprintOp.java new file mode 100644 index 000000000..7a11e393b --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/RestoreFootprintOp.java @@ -0,0 +1,76 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct RestoreFootprintOp +// { +// ExtensionPoint ext; +// }; + +// =========================================================================== +public class RestoreFootprintOp implements XdrElement { + public RestoreFootprintOp() {} + + private ExtensionPoint ext; + + public ExtensionPoint getExt() { + return this.ext; + } + + public void setExt(ExtensionPoint value) { + this.ext = value; + } + + public static void encode( + XdrDataOutputStream stream, RestoreFootprintOp encodedRestoreFootprintOp) throws IOException { + ExtensionPoint.encode(stream, encodedRestoreFootprintOp.ext); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static RestoreFootprintOp decode(XdrDataInputStream stream) throws IOException { + RestoreFootprintOp decodedRestoreFootprintOp = new RestoreFootprintOp(); + decodedRestoreFootprintOp.ext = ExtensionPoint.decode(stream); + return decodedRestoreFootprintOp; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.ext); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof RestoreFootprintOp)) { + return false; + } + + RestoreFootprintOp other = (RestoreFootprintOp) object; + return Objects.equal(this.ext, other.ext); + } + + public static final class Builder { + private ExtensionPoint ext; + + public Builder ext(ExtensionPoint ext) { + this.ext = ext; + return this; + } + + public RestoreFootprintOp build() { + RestoreFootprintOp val = new RestoreFootprintOp(); + val.setExt(this.ext); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/RestoreFootprintResult.java b/src/main/java/org/stellar/sdk/xdr/RestoreFootprintResult.java new file mode 100644 index 000000000..1c0145f19 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/RestoreFootprintResult.java @@ -0,0 +1,98 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union RestoreFootprintResult switch (RestoreFootprintResultCode code) +// { +// case RESTORE_FOOTPRINT_SUCCESS: +// void; +// case RESTORE_FOOTPRINT_MALFORMED: +// case RESTORE_FOOTPRINT_RESOURCE_LIMIT_EXCEEDED: +// void; +// }; + +// =========================================================================== +public class RestoreFootprintResult implements XdrElement { + public RestoreFootprintResult() {} + + RestoreFootprintResultCode code; + + public RestoreFootprintResultCode getDiscriminant() { + return this.code; + } + + public void setDiscriminant(RestoreFootprintResultCode value) { + this.code = value; + } + + public static final class Builder { + private RestoreFootprintResultCode discriminant; + + public Builder discriminant(RestoreFootprintResultCode discriminant) { + this.discriminant = discriminant; + return this; + } + + public RestoreFootprintResult build() { + RestoreFootprintResult val = new RestoreFootprintResult(); + val.setDiscriminant(discriminant); + return val; + } + } + + public static void encode( + XdrDataOutputStream stream, RestoreFootprintResult encodedRestoreFootprintResult) + throws IOException { + // Xdrgen::AST::Identifier + // RestoreFootprintResultCode + stream.writeInt(encodedRestoreFootprintResult.getDiscriminant().getValue()); + switch (encodedRestoreFootprintResult.getDiscriminant()) { + case RESTORE_FOOTPRINT_SUCCESS: + break; + case RESTORE_FOOTPRINT_MALFORMED: + case RESTORE_FOOTPRINT_RESOURCE_LIMIT_EXCEEDED: + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static RestoreFootprintResult decode(XdrDataInputStream stream) throws IOException { + RestoreFootprintResult decodedRestoreFootprintResult = new RestoreFootprintResult(); + RestoreFootprintResultCode discriminant = RestoreFootprintResultCode.decode(stream); + decodedRestoreFootprintResult.setDiscriminant(discriminant); + switch (decodedRestoreFootprintResult.getDiscriminant()) { + case RESTORE_FOOTPRINT_SUCCESS: + break; + case RESTORE_FOOTPRINT_MALFORMED: + case RESTORE_FOOTPRINT_RESOURCE_LIMIT_EXCEEDED: + break; + } + return decodedRestoreFootprintResult; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.code); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof RestoreFootprintResult)) { + return false; + } + + RestoreFootprintResult other = (RestoreFootprintResult) object; + return Objects.equal(this.code, other.code); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/RestoreFootprintResultCode.java b/src/main/java/org/stellar/sdk/xdr/RestoreFootprintResultCode.java new file mode 100644 index 000000000..a31823310 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/RestoreFootprintResultCode.java @@ -0,0 +1,60 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum RestoreFootprintResultCode +// { +// // codes considered as "success" for the operation +// RESTORE_FOOTPRINT_SUCCESS = 0, +// +// // codes considered as "failure" for the operation +// RESTORE_FOOTPRINT_MALFORMED = -1, +// RESTORE_FOOTPRINT_RESOURCE_LIMIT_EXCEEDED = -2 +// }; + +// =========================================================================== +public enum RestoreFootprintResultCode implements XdrElement { + RESTORE_FOOTPRINT_SUCCESS(0), + RESTORE_FOOTPRINT_MALFORMED(-1), + RESTORE_FOOTPRINT_RESOURCE_LIMIT_EXCEEDED(-2), + ; + private int mValue; + + RestoreFootprintResultCode(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static RestoreFootprintResultCode decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return RESTORE_FOOTPRINT_SUCCESS; + case -1: + return RESTORE_FOOTPRINT_MALFORMED; + case -2: + return RESTORE_FOOTPRINT_RESOURCE_LIMIT_EXCEEDED; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, RestoreFootprintResultCode value) + throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipOp.java b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipOp.java index 696acd791..6f315559d 100644 --- a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipOp.java +++ b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -77,8 +79,8 @@ public Builder signer(RevokeSponsorshipOpSigner signer) { public RevokeSponsorshipOp build() { RevokeSponsorshipOp val = new RevokeSponsorshipOp(); val.setDiscriminant(discriminant); - val.setLedgerKey(ledgerKey); - val.setSigner(signer); + val.setLedgerKey(this.ledgerKey); + val.setSigner(this.signer); return val; } } @@ -208,8 +210,8 @@ public Builder signerKey(SignerKey signerKey) { public RevokeSponsorshipOpSigner build() { RevokeSponsorshipOpSigner val = new RevokeSponsorshipOpSigner(); - val.setAccountID(accountID); - val.setSignerKey(signerKey); + val.setAccountID(this.accountID); + val.setSignerKey(this.signerKey); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResult.java b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResult.java index a63703e4c..4ddc146cd 100644 --- a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResult.java +++ b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,11 @@ // { // case REVOKE_SPONSORSHIP_SUCCESS: // void; -// default: +// case REVOKE_SPONSORSHIP_DOES_NOT_EXIST: +// case REVOKE_SPONSORSHIP_NOT_SPONSOR: +// case REVOKE_SPONSORSHIP_LOW_RESERVE: +// case REVOKE_SPONSORSHIP_ONLY_TRANSFERABLE: +// case REVOKE_SPONSORSHIP_MALFORMED: // void; // }; @@ -54,7 +60,11 @@ public static void encode( switch (encodedRevokeSponsorshipResult.getDiscriminant()) { case REVOKE_SPONSORSHIP_SUCCESS: break; - default: + case REVOKE_SPONSORSHIP_DOES_NOT_EXIST: + case REVOKE_SPONSORSHIP_NOT_SPONSOR: + case REVOKE_SPONSORSHIP_LOW_RESERVE: + case REVOKE_SPONSORSHIP_ONLY_TRANSFERABLE: + case REVOKE_SPONSORSHIP_MALFORMED: break; } } @@ -70,7 +80,11 @@ public static RevokeSponsorshipResult decode(XdrDataInputStream stream) throws I switch (decodedRevokeSponsorshipResult.getDiscriminant()) { case REVOKE_SPONSORSHIP_SUCCESS: break; - default: + case REVOKE_SPONSORSHIP_DOES_NOT_EXIST: + case REVOKE_SPONSORSHIP_NOT_SPONSOR: + case REVOKE_SPONSORSHIP_LOW_RESERVE: + case REVOKE_SPONSORSHIP_ONLY_TRANSFERABLE: + case REVOKE_SPONSORSHIP_MALFORMED: break; } return decodedRevokeSponsorshipResult; diff --git a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResultCode.java b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResultCode.java index 53cf665ec..970066134 100644 --- a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipType.java b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipType.java index 530cea01e..7b3278b68 100644 --- a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipType.java +++ b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/SCAddress.java b/src/main/java/org/stellar/sdk/xdr/SCAddress.java new file mode 100644 index 000000000..f07786859 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCAddress.java @@ -0,0 +1,134 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union SCAddress switch (SCAddressType type) +// { +// case SC_ADDRESS_TYPE_ACCOUNT: +// AccountID accountId; +// case SC_ADDRESS_TYPE_CONTRACT: +// Hash contractId; +// }; + +// =========================================================================== +public class SCAddress implements XdrElement { + public SCAddress() {} + + SCAddressType type; + + public SCAddressType getDiscriminant() { + return this.type; + } + + public void setDiscriminant(SCAddressType value) { + this.type = value; + } + + private AccountID accountId; + + public AccountID getAccountId() { + return this.accountId; + } + + public void setAccountId(AccountID value) { + this.accountId = value; + } + + private Hash contractId; + + public Hash getContractId() { + return this.contractId; + } + + public void setContractId(Hash value) { + this.contractId = value; + } + + public static final class Builder { + private SCAddressType discriminant; + private AccountID accountId; + private Hash contractId; + + public Builder discriminant(SCAddressType discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder accountId(AccountID accountId) { + this.accountId = accountId; + return this; + } + + public Builder contractId(Hash contractId) { + this.contractId = contractId; + return this; + } + + public SCAddress build() { + SCAddress val = new SCAddress(); + val.setDiscriminant(discriminant); + val.setAccountId(this.accountId); + val.setContractId(this.contractId); + return val; + } + } + + public static void encode(XdrDataOutputStream stream, SCAddress encodedSCAddress) + throws IOException { + // Xdrgen::AST::Identifier + // SCAddressType + stream.writeInt(encodedSCAddress.getDiscriminant().getValue()); + switch (encodedSCAddress.getDiscriminant()) { + case SC_ADDRESS_TYPE_ACCOUNT: + AccountID.encode(stream, encodedSCAddress.accountId); + break; + case SC_ADDRESS_TYPE_CONTRACT: + Hash.encode(stream, encodedSCAddress.contractId); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCAddress decode(XdrDataInputStream stream) throws IOException { + SCAddress decodedSCAddress = new SCAddress(); + SCAddressType discriminant = SCAddressType.decode(stream); + decodedSCAddress.setDiscriminant(discriminant); + switch (decodedSCAddress.getDiscriminant()) { + case SC_ADDRESS_TYPE_ACCOUNT: + decodedSCAddress.accountId = AccountID.decode(stream); + break; + case SC_ADDRESS_TYPE_CONTRACT: + decodedSCAddress.contractId = Hash.decode(stream); + break; + } + return decodedSCAddress; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.accountId, this.contractId, this.type); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCAddress)) { + return false; + } + + SCAddress other = (SCAddress) object; + return Objects.equal(this.accountId, other.accountId) + && Objects.equal(this.contractId, other.contractId) + && Objects.equal(this.type, other.type); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCAddressType.java b/src/main/java/org/stellar/sdk/xdr/SCAddressType.java new file mode 100644 index 000000000..06a646f17 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCAddressType.java @@ -0,0 +1,52 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum SCAddressType +// { +// SC_ADDRESS_TYPE_ACCOUNT = 0, +// SC_ADDRESS_TYPE_CONTRACT = 1 +// }; + +// =========================================================================== +public enum SCAddressType implements XdrElement { + SC_ADDRESS_TYPE_ACCOUNT(0), + SC_ADDRESS_TYPE_CONTRACT(1), + ; + private int mValue; + + SCAddressType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static SCAddressType decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return SC_ADDRESS_TYPE_ACCOUNT; + case 1: + return SC_ADDRESS_TYPE_CONTRACT; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, SCAddressType value) throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCBytes.java b/src/main/java/org/stellar/sdk/xdr/SCBytes.java new file mode 100644 index 000000000..26b4df89c --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCBytes.java @@ -0,0 +1,65 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// typedef opaque SCBytes<>; + +// =========================================================================== +public class SCBytes implements XdrElement { + private byte[] SCBytes; + + public SCBytes() {} + + public SCBytes(byte[] SCBytes) { + this.SCBytes = SCBytes; + } + + public byte[] getSCBytes() { + return this.SCBytes; + } + + public void setSCBytes(byte[] value) { + this.SCBytes = value; + } + + public static void encode(XdrDataOutputStream stream, SCBytes encodedSCBytes) throws IOException { + int SCBytessize = encodedSCBytes.SCBytes.length; + stream.writeInt(SCBytessize); + stream.write(encodedSCBytes.getSCBytes(), 0, SCBytessize); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCBytes decode(XdrDataInputStream stream) throws IOException { + SCBytes decodedSCBytes = new SCBytes(); + int SCBytessize = stream.readInt(); + decodedSCBytes.SCBytes = new byte[SCBytessize]; + stream.read(decodedSCBytes.SCBytes, 0, SCBytessize); + return decodedSCBytes; + } + + @Override + public int hashCode() { + return Arrays.hashCode(this.SCBytes); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCBytes)) { + return false; + } + + SCBytes other = (SCBytes) object; + return Arrays.equals(this.SCBytes, other.SCBytes); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCContractInstance.java b/src/main/java/org/stellar/sdk/xdr/SCContractInstance.java new file mode 100644 index 000000000..c5cd2db3b --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCContractInstance.java @@ -0,0 +1,104 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCContractInstance { +// ContractExecutable executable; +// SCMap* storage; +// }; + +// =========================================================================== +public class SCContractInstance implements XdrElement { + public SCContractInstance() {} + + private ContractExecutable executable; + + public ContractExecutable getExecutable() { + return this.executable; + } + + public void setExecutable(ContractExecutable value) { + this.executable = value; + } + + private SCMap storage; + + public SCMap getStorage() { + return this.storage; + } + + public void setStorage(SCMap value) { + this.storage = value; + } + + public static void encode( + XdrDataOutputStream stream, SCContractInstance encodedSCContractInstance) throws IOException { + ContractExecutable.encode(stream, encodedSCContractInstance.executable); + if (encodedSCContractInstance.storage != null) { + stream.writeInt(1); + SCMap.encode(stream, encodedSCContractInstance.storage); + } else { + stream.writeInt(0); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCContractInstance decode(XdrDataInputStream stream) throws IOException { + SCContractInstance decodedSCContractInstance = new SCContractInstance(); + decodedSCContractInstance.executable = ContractExecutable.decode(stream); + int storagePresent = stream.readInt(); + if (storagePresent != 0) { + decodedSCContractInstance.storage = SCMap.decode(stream); + } + return decodedSCContractInstance; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.executable, this.storage); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCContractInstance)) { + return false; + } + + SCContractInstance other = (SCContractInstance) object; + return Objects.equal(this.executable, other.executable) + && Objects.equal(this.storage, other.storage); + } + + public static final class Builder { + private ContractExecutable executable; + private SCMap storage; + + public Builder executable(ContractExecutable executable) { + this.executable = executable; + return this; + } + + public Builder storage(SCMap storage) { + this.storage = storage; + return this; + } + + public SCContractInstance build() { + SCContractInstance val = new SCContractInstance(); + val.setExecutable(this.executable); + val.setStorage(this.storage); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCEnvMetaEntry.java b/src/main/java/org/stellar/sdk/xdr/SCEnvMetaEntry.java new file mode 100644 index 000000000..e31461699 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCEnvMetaEntry.java @@ -0,0 +1,108 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union SCEnvMetaEntry switch (SCEnvMetaKind kind) +// { +// case SC_ENV_META_KIND_INTERFACE_VERSION: +// uint64 interfaceVersion; +// }; + +// =========================================================================== +public class SCEnvMetaEntry implements XdrElement { + public SCEnvMetaEntry() {} + + SCEnvMetaKind kind; + + public SCEnvMetaKind getDiscriminant() { + return this.kind; + } + + public void setDiscriminant(SCEnvMetaKind value) { + this.kind = value; + } + + private Uint64 interfaceVersion; + + public Uint64 getInterfaceVersion() { + return this.interfaceVersion; + } + + public void setInterfaceVersion(Uint64 value) { + this.interfaceVersion = value; + } + + public static final class Builder { + private SCEnvMetaKind discriminant; + private Uint64 interfaceVersion; + + public Builder discriminant(SCEnvMetaKind discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder interfaceVersion(Uint64 interfaceVersion) { + this.interfaceVersion = interfaceVersion; + return this; + } + + public SCEnvMetaEntry build() { + SCEnvMetaEntry val = new SCEnvMetaEntry(); + val.setDiscriminant(discriminant); + val.setInterfaceVersion(this.interfaceVersion); + return val; + } + } + + public static void encode(XdrDataOutputStream stream, SCEnvMetaEntry encodedSCEnvMetaEntry) + throws IOException { + // Xdrgen::AST::Identifier + // SCEnvMetaKind + stream.writeInt(encodedSCEnvMetaEntry.getDiscriminant().getValue()); + switch (encodedSCEnvMetaEntry.getDiscriminant()) { + case SC_ENV_META_KIND_INTERFACE_VERSION: + Uint64.encode(stream, encodedSCEnvMetaEntry.interfaceVersion); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCEnvMetaEntry decode(XdrDataInputStream stream) throws IOException { + SCEnvMetaEntry decodedSCEnvMetaEntry = new SCEnvMetaEntry(); + SCEnvMetaKind discriminant = SCEnvMetaKind.decode(stream); + decodedSCEnvMetaEntry.setDiscriminant(discriminant); + switch (decodedSCEnvMetaEntry.getDiscriminant()) { + case SC_ENV_META_KIND_INTERFACE_VERSION: + decodedSCEnvMetaEntry.interfaceVersion = Uint64.decode(stream); + break; + } + return decodedSCEnvMetaEntry; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.interfaceVersion, this.kind); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCEnvMetaEntry)) { + return false; + } + + SCEnvMetaEntry other = (SCEnvMetaEntry) object; + return Objects.equal(this.interfaceVersion, other.interfaceVersion) + && Objects.equal(this.kind, other.kind); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCEnvMetaKind.java b/src/main/java/org/stellar/sdk/xdr/SCEnvMetaKind.java new file mode 100644 index 000000000..423f45e1f --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCEnvMetaKind.java @@ -0,0 +1,48 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum SCEnvMetaKind +// { +// SC_ENV_META_KIND_INTERFACE_VERSION = 0 +// }; + +// =========================================================================== +public enum SCEnvMetaKind implements XdrElement { + SC_ENV_META_KIND_INTERFACE_VERSION(0), + ; + private int mValue; + + SCEnvMetaKind(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static SCEnvMetaKind decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return SC_ENV_META_KIND_INTERFACE_VERSION; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, SCEnvMetaKind value) throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCError.java b/src/main/java/org/stellar/sdk/xdr/SCError.java new file mode 100644 index 000000000..80cb18b08 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCError.java @@ -0,0 +1,95 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCError +// { +// SCErrorType type; +// SCErrorCode code; +// }; + +// =========================================================================== +public class SCError implements XdrElement { + public SCError() {} + + private SCErrorType type; + + public SCErrorType getType() { + return this.type; + } + + public void setType(SCErrorType value) { + this.type = value; + } + + private SCErrorCode code; + + public SCErrorCode getCode() { + return this.code; + } + + public void setCode(SCErrorCode value) { + this.code = value; + } + + public static void encode(XdrDataOutputStream stream, SCError encodedSCError) throws IOException { + SCErrorType.encode(stream, encodedSCError.type); + SCErrorCode.encode(stream, encodedSCError.code); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCError decode(XdrDataInputStream stream) throws IOException { + SCError decodedSCError = new SCError(); + decodedSCError.type = SCErrorType.decode(stream); + decodedSCError.code = SCErrorCode.decode(stream); + return decodedSCError; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.type, this.code); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCError)) { + return false; + } + + SCError other = (SCError) object; + return Objects.equal(this.type, other.type) && Objects.equal(this.code, other.code); + } + + public static final class Builder { + private SCErrorType type; + private SCErrorCode code; + + public Builder type(SCErrorType type) { + this.type = type; + return this; + } + + public Builder code(SCErrorCode code) { + this.code = code; + return this; + } + + public SCError build() { + SCError val = new SCError(); + val.setType(this.type); + val.setCode(this.code); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCErrorCode.java b/src/main/java/org/stellar/sdk/xdr/SCErrorCode.java new file mode 100644 index 000000000..d5374df5e --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCErrorCode.java @@ -0,0 +1,84 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum SCErrorCode +// { +// SCEC_ARITH_DOMAIN = 0, // some arithmetic wasn't defined (overflow, divide-by-zero) +// SCEC_INDEX_BOUNDS = 1, // something was indexed beyond its bounds +// SCEC_INVALID_INPUT = 2, // user provided some otherwise-bad data +// SCEC_MISSING_VALUE = 3, // some value was required but not provided +// SCEC_EXISTING_VALUE = 4, // some value was provided where not allowed +// SCEC_EXCEEDED_LIMIT = 5, // some arbitrary limit -- gas or otherwise -- was hit +// SCEC_INVALID_ACTION = 6, // data was valid but action requested was not +// SCEC_INTERNAL_ERROR = 7, // the internal state of the host was otherwise-bad +// SCEC_UNEXPECTED_TYPE = 8, // some type wasn't as expected +// SCEC_UNEXPECTED_SIZE = 9 // something's size wasn't as expected +// }; + +// =========================================================================== +public enum SCErrorCode implements XdrElement { + SCEC_ARITH_DOMAIN(0), + SCEC_INDEX_BOUNDS(1), + SCEC_INVALID_INPUT(2), + SCEC_MISSING_VALUE(3), + SCEC_EXISTING_VALUE(4), + SCEC_EXCEEDED_LIMIT(5), + SCEC_INVALID_ACTION(6), + SCEC_INTERNAL_ERROR(7), + SCEC_UNEXPECTED_TYPE(8), + SCEC_UNEXPECTED_SIZE(9), + ; + private int mValue; + + SCErrorCode(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static SCErrorCode decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return SCEC_ARITH_DOMAIN; + case 1: + return SCEC_INDEX_BOUNDS; + case 2: + return SCEC_INVALID_INPUT; + case 3: + return SCEC_MISSING_VALUE; + case 4: + return SCEC_EXISTING_VALUE; + case 5: + return SCEC_EXCEEDED_LIMIT; + case 6: + return SCEC_INVALID_ACTION; + case 7: + return SCEC_INTERNAL_ERROR; + case 8: + return SCEC_UNEXPECTED_TYPE; + case 9: + return SCEC_UNEXPECTED_SIZE; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, SCErrorCode value) throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCErrorType.java b/src/main/java/org/stellar/sdk/xdr/SCErrorType.java new file mode 100644 index 000000000..a1cdd808d --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCErrorType.java @@ -0,0 +1,84 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum SCErrorType +// { +// SCE_CONTRACT = 0, +// SCE_WASM_VM = 1, +// SCE_CONTEXT = 2, +// SCE_STORAGE = 3, +// SCE_OBJECT = 4, +// SCE_CRYPTO = 5, +// SCE_EVENTS = 6, +// SCE_BUDGET = 7, +// SCE_VALUE = 8, +// SCE_AUTH = 9 +// }; + +// =========================================================================== +public enum SCErrorType implements XdrElement { + SCE_CONTRACT(0), + SCE_WASM_VM(1), + SCE_CONTEXT(2), + SCE_STORAGE(3), + SCE_OBJECT(4), + SCE_CRYPTO(5), + SCE_EVENTS(6), + SCE_BUDGET(7), + SCE_VALUE(8), + SCE_AUTH(9), + ; + private int mValue; + + SCErrorType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static SCErrorType decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return SCE_CONTRACT; + case 1: + return SCE_WASM_VM; + case 2: + return SCE_CONTEXT; + case 3: + return SCE_STORAGE; + case 4: + return SCE_OBJECT; + case 5: + return SCE_CRYPTO; + case 6: + return SCE_EVENTS; + case 7: + return SCE_BUDGET; + case 8: + return SCE_VALUE; + case 9: + return SCE_AUTH; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, SCErrorType value) throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCMap.java b/src/main/java/org/stellar/sdk/xdr/SCMap.java new file mode 100644 index 000000000..bc82a97ef --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCMap.java @@ -0,0 +1,69 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// typedef SCMapEntry SCMap<>; + +// =========================================================================== +public class SCMap implements XdrElement { + private SCMapEntry[] SCMap; + + public SCMap() {} + + public SCMap(SCMapEntry[] SCMap) { + this.SCMap = SCMap; + } + + public SCMapEntry[] getSCMap() { + return this.SCMap; + } + + public void setSCMap(SCMapEntry[] value) { + this.SCMap = value; + } + + public static void encode(XdrDataOutputStream stream, SCMap encodedSCMap) throws IOException { + int SCMapsize = encodedSCMap.getSCMap().length; + stream.writeInt(SCMapsize); + for (int i = 0; i < SCMapsize; i++) { + SCMapEntry.encode(stream, encodedSCMap.SCMap[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCMap decode(XdrDataInputStream stream) throws IOException { + SCMap decodedSCMap = new SCMap(); + int SCMapsize = stream.readInt(); + decodedSCMap.SCMap = new SCMapEntry[SCMapsize]; + for (int i = 0; i < SCMapsize; i++) { + decodedSCMap.SCMap[i] = SCMapEntry.decode(stream); + } + return decodedSCMap; + } + + @Override + public int hashCode() { + return Arrays.hashCode(this.SCMap); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCMap)) { + return false; + } + + SCMap other = (SCMap) object; + return Arrays.equals(this.SCMap, other.SCMap); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCMapEntry.java b/src/main/java/org/stellar/sdk/xdr/SCMapEntry.java new file mode 100644 index 000000000..66c82b895 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCMapEntry.java @@ -0,0 +1,96 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCMapEntry +// { +// SCVal key; +// SCVal val; +// }; + +// =========================================================================== +public class SCMapEntry implements XdrElement { + public SCMapEntry() {} + + private SCVal key; + + public SCVal getKey() { + return this.key; + } + + public void setKey(SCVal value) { + this.key = value; + } + + private SCVal val; + + public SCVal getVal() { + return this.val; + } + + public void setVal(SCVal value) { + this.val = value; + } + + public static void encode(XdrDataOutputStream stream, SCMapEntry encodedSCMapEntry) + throws IOException { + SCVal.encode(stream, encodedSCMapEntry.key); + SCVal.encode(stream, encodedSCMapEntry.val); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCMapEntry decode(XdrDataInputStream stream) throws IOException { + SCMapEntry decodedSCMapEntry = new SCMapEntry(); + decodedSCMapEntry.key = SCVal.decode(stream); + decodedSCMapEntry.val = SCVal.decode(stream); + return decodedSCMapEntry; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.key, this.val); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCMapEntry)) { + return false; + } + + SCMapEntry other = (SCMapEntry) object; + return Objects.equal(this.key, other.key) && Objects.equal(this.val, other.val); + } + + public static final class Builder { + private SCVal key; + private SCVal val; + + public Builder key(SCVal key) { + this.key = key; + return this; + } + + public Builder val(SCVal val) { + this.val = val; + return this; + } + + public SCMapEntry build() { + SCMapEntry val = new SCMapEntry(); + val.setKey(this.key); + val.setVal(this.val); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCMetaEntry.java b/src/main/java/org/stellar/sdk/xdr/SCMetaEntry.java new file mode 100644 index 000000000..2b344cdd5 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCMetaEntry.java @@ -0,0 +1,107 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union SCMetaEntry switch (SCMetaKind kind) +// { +// case SC_META_V0: +// SCMetaV0 v0; +// }; + +// =========================================================================== +public class SCMetaEntry implements XdrElement { + public SCMetaEntry() {} + + SCMetaKind kind; + + public SCMetaKind getDiscriminant() { + return this.kind; + } + + public void setDiscriminant(SCMetaKind value) { + this.kind = value; + } + + private SCMetaV0 v0; + + public SCMetaV0 getV0() { + return this.v0; + } + + public void setV0(SCMetaV0 value) { + this.v0 = value; + } + + public static final class Builder { + private SCMetaKind discriminant; + private SCMetaV0 v0; + + public Builder discriminant(SCMetaKind discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder v0(SCMetaV0 v0) { + this.v0 = v0; + return this; + } + + public SCMetaEntry build() { + SCMetaEntry val = new SCMetaEntry(); + val.setDiscriminant(discriminant); + val.setV0(this.v0); + return val; + } + } + + public static void encode(XdrDataOutputStream stream, SCMetaEntry encodedSCMetaEntry) + throws IOException { + // Xdrgen::AST::Identifier + // SCMetaKind + stream.writeInt(encodedSCMetaEntry.getDiscriminant().getValue()); + switch (encodedSCMetaEntry.getDiscriminant()) { + case SC_META_V0: + SCMetaV0.encode(stream, encodedSCMetaEntry.v0); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCMetaEntry decode(XdrDataInputStream stream) throws IOException { + SCMetaEntry decodedSCMetaEntry = new SCMetaEntry(); + SCMetaKind discriminant = SCMetaKind.decode(stream); + decodedSCMetaEntry.setDiscriminant(discriminant); + switch (decodedSCMetaEntry.getDiscriminant()) { + case SC_META_V0: + decodedSCMetaEntry.v0 = SCMetaV0.decode(stream); + break; + } + return decodedSCMetaEntry; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.v0, this.kind); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCMetaEntry)) { + return false; + } + + SCMetaEntry other = (SCMetaEntry) object; + return Objects.equal(this.v0, other.v0) && Objects.equal(this.kind, other.kind); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCMetaKind.java b/src/main/java/org/stellar/sdk/xdr/SCMetaKind.java new file mode 100644 index 000000000..80c2fe476 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCMetaKind.java @@ -0,0 +1,48 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum SCMetaKind +// { +// SC_META_V0 = 0 +// }; + +// =========================================================================== +public enum SCMetaKind implements XdrElement { + SC_META_V0(0), + ; + private int mValue; + + SCMetaKind(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static SCMetaKind decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return SC_META_V0; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, SCMetaKind value) throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCMetaV0.java b/src/main/java/org/stellar/sdk/xdr/SCMetaV0.java new file mode 100644 index 000000000..0cb552c5e --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCMetaV0.java @@ -0,0 +1,96 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCMetaV0 +// { +// string key<>; +// string val<>; +// }; + +// =========================================================================== +public class SCMetaV0 implements XdrElement { + public SCMetaV0() {} + + private XdrString key; + + public XdrString getKey() { + return this.key; + } + + public void setKey(XdrString value) { + this.key = value; + } + + private XdrString val; + + public XdrString getVal() { + return this.val; + } + + public void setVal(XdrString value) { + this.val = value; + } + + public static void encode(XdrDataOutputStream stream, SCMetaV0 encodedSCMetaV0) + throws IOException { + encodedSCMetaV0.key.encode(stream); + encodedSCMetaV0.val.encode(stream); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCMetaV0 decode(XdrDataInputStream stream) throws IOException { + SCMetaV0 decodedSCMetaV0 = new SCMetaV0(); + decodedSCMetaV0.key = XdrString.decode(stream, 2147483647); + decodedSCMetaV0.val = XdrString.decode(stream, 2147483647); + return decodedSCMetaV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.key, this.val); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCMetaV0)) { + return false; + } + + SCMetaV0 other = (SCMetaV0) object; + return Objects.equal(this.key, other.key) && Objects.equal(this.val, other.val); + } + + public static final class Builder { + private XdrString key; + private XdrString val; + + public Builder key(XdrString key) { + this.key = key; + return this; + } + + public Builder val(XdrString val) { + this.val = val; + return this; + } + + public SCMetaV0 build() { + SCMetaV0 val = new SCMetaV0(); + val.setKey(this.key); + val.setVal(this.val); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCNonceKey.java b/src/main/java/org/stellar/sdk/xdr/SCNonceKey.java new file mode 100644 index 000000000..3e888fa51 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCNonceKey.java @@ -0,0 +1,75 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCNonceKey { +// int64 nonce; +// }; + +// =========================================================================== +public class SCNonceKey implements XdrElement { + public SCNonceKey() {} + + private Int64 nonce; + + public Int64 getNonce() { + return this.nonce; + } + + public void setNonce(Int64 value) { + this.nonce = value; + } + + public static void encode(XdrDataOutputStream stream, SCNonceKey encodedSCNonceKey) + throws IOException { + Int64.encode(stream, encodedSCNonceKey.nonce); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCNonceKey decode(XdrDataInputStream stream) throws IOException { + SCNonceKey decodedSCNonceKey = new SCNonceKey(); + decodedSCNonceKey.nonce = Int64.decode(stream); + return decodedSCNonceKey; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.nonce); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCNonceKey)) { + return false; + } + + SCNonceKey other = (SCNonceKey) object; + return Objects.equal(this.nonce, other.nonce); + } + + public static final class Builder { + private Int64 nonce; + + public Builder nonce(Int64 nonce) { + this.nonce = nonce; + return this; + } + + public SCNonceKey build() { + SCNonceKey val = new SCNonceKey(); + val.setNonce(this.nonce); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCPBallot.java b/src/main/java/org/stellar/sdk/xdr/SCPBallot.java index 90fbf4595..2fdfce8ec 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPBallot.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPBallot.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -86,8 +88,8 @@ public Builder value(Value value) { public SCPBallot build() { SCPBallot val = new SCPBallot(); - val.setCounter(counter); - val.setValue(value); + val.setCounter(this.counter); + val.setValue(this.value); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCPEnvelope.java b/src/main/java/org/stellar/sdk/xdr/SCPEnvelope.java index fa459049a..7ff943118 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPEnvelope.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPEnvelope.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -87,8 +89,8 @@ public Builder signature(Signature signature) { public SCPEnvelope build() { SCPEnvelope val = new SCPEnvelope(); - val.setStatement(statement); - val.setSignature(signature); + val.setStatement(this.statement); + val.setSignature(this.signature); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntry.java b/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntry.java index 6ceeddbdf..94764adda 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntry.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -55,7 +57,7 @@ public Builder v0(SCPHistoryEntryV0 v0) { public SCPHistoryEntry build() { SCPHistoryEntry val = new SCPHistoryEntry(); val.setDiscriminant(discriminant); - val.setV0(v0); + val.setV0(this.v0); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntryV0.java b/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntryV0.java index 02b74bc75..2536f0a2a 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntryV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntryV0.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -96,8 +98,8 @@ public Builder ledgerMessages(LedgerSCPMessages ledgerMessages) { public SCPHistoryEntryV0 build() { SCPHistoryEntryV0 val = new SCPHistoryEntryV0(); - val.setQuorumSets(quorumSets); - val.setLedgerMessages(ledgerMessages); + val.setQuorumSets(this.quorumSets); + val.setLedgerMessages(this.ledgerMessages); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCPNomination.java b/src/main/java/org/stellar/sdk/xdr/SCPNomination.java index 3d8657f39..b0880da67 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPNomination.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPNomination.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -125,9 +127,9 @@ public Builder accepted(Value[] accepted) { public SCPNomination build() { SCPNomination val = new SCPNomination(); - val.setQuorumSetHash(quorumSetHash); - val.setVotes(votes); - val.setAccepted(accepted); + val.setQuorumSetHash(this.quorumSetHash); + val.setVotes(this.votes); + val.setAccepted(this.accepted); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCPQuorumSet.java b/src/main/java/org/stellar/sdk/xdr/SCPQuorumSet.java index 9bb00ab8d..e691286ff 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPQuorumSet.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPQuorumSet.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -125,9 +127,9 @@ public Builder innerSets(SCPQuorumSet[] innerSets) { public SCPQuorumSet build() { SCPQuorumSet val = new SCPQuorumSet(); - val.setThreshold(threshold); - val.setValidators(validators); - val.setInnerSets(innerSets); + val.setThreshold(this.threshold); + val.setValidators(this.validators); + val.setInnerSets(this.innerSets); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCPStatement.java b/src/main/java/org/stellar/sdk/xdr/SCPStatement.java index 77674767a..fe30c9828 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPStatement.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPStatement.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -139,9 +141,9 @@ public Builder pledges(SCPStatementPledges pledges) { public SCPStatement build() { SCPStatement val = new SCPStatement(); - val.setNodeID(nodeID); - val.setSlotIndex(slotIndex); - val.setPledges(pledges); + val.setNodeID(this.nodeID); + val.setSlotIndex(this.slotIndex); + val.setPledges(this.pledges); return val; } } @@ -234,10 +236,10 @@ public Builder nominate(SCPNomination nominate) { public SCPStatementPledges build() { SCPStatementPledges val = new SCPStatementPledges(); val.setDiscriminant(discriminant); - val.setPrepare(prepare); - val.setConfirm(confirm); - val.setExternalize(externalize); - val.setNominate(nominate); + val.setPrepare(this.prepare); + val.setConfirm(this.confirm); + val.setExternalize(this.externalize); + val.setNominate(this.nominate); return val; } } @@ -475,12 +477,12 @@ public Builder nH(Uint32 nH) { public SCPStatementPrepare build() { SCPStatementPrepare val = new SCPStatementPrepare(); - val.setQuorumSetHash(quorumSetHash); - val.setBallot(ballot); - val.setPrepared(prepared); - val.setPreparedPrime(preparedPrime); - val.setNC(nC); - val.setNH(nH); + val.setQuorumSetHash(this.quorumSetHash); + val.setBallot(this.ballot); + val.setPrepared(this.prepared); + val.setPreparedPrime(this.preparedPrime); + val.setNC(this.nC); + val.setNH(this.nH); return val; } } @@ -617,11 +619,11 @@ public Builder quorumSetHash(Hash quorumSetHash) { public SCPStatementConfirm build() { SCPStatementConfirm val = new SCPStatementConfirm(); - val.setBallot(ballot); - val.setNPrepared(nPrepared); - val.setNCommit(nCommit); - val.setNH(nH); - val.setQuorumSetHash(quorumSetHash); + val.setBallot(this.ballot); + val.setNPrepared(this.nPrepared); + val.setNCommit(this.nCommit); + val.setNH(this.nH); + val.setQuorumSetHash(this.quorumSetHash); return val; } } @@ -719,9 +721,9 @@ public Builder commitQuorumSetHash(Hash commitQuorumSetHash) { public SCPStatementExternalize build() { SCPStatementExternalize val = new SCPStatementExternalize(); - val.setCommit(commit); - val.setNH(nH); - val.setCommitQuorumSetHash(commitQuorumSetHash); + val.setCommit(this.commit); + val.setNH(this.nH); + val.setCommitQuorumSetHash(this.commitQuorumSetHash); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCPStatementType.java b/src/main/java/org/stellar/sdk/xdr/SCPStatementType.java index 7a0b26298..1297c606a 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPStatementType.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPStatementType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecEntry.java b/src/main/java/org/stellar/sdk/xdr/SCSpecEntry.java new file mode 100644 index 000000000..6b0c4b7f8 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecEntry.java @@ -0,0 +1,218 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union SCSpecEntry switch (SCSpecEntryKind kind) +// { +// case SC_SPEC_ENTRY_FUNCTION_V0: +// SCSpecFunctionV0 functionV0; +// case SC_SPEC_ENTRY_UDT_STRUCT_V0: +// SCSpecUDTStructV0 udtStructV0; +// case SC_SPEC_ENTRY_UDT_UNION_V0: +// SCSpecUDTUnionV0 udtUnionV0; +// case SC_SPEC_ENTRY_UDT_ENUM_V0: +// SCSpecUDTEnumV0 udtEnumV0; +// case SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0: +// SCSpecUDTErrorEnumV0 udtErrorEnumV0; +// }; + +// =========================================================================== +public class SCSpecEntry implements XdrElement { + public SCSpecEntry() {} + + SCSpecEntryKind kind; + + public SCSpecEntryKind getDiscriminant() { + return this.kind; + } + + public void setDiscriminant(SCSpecEntryKind value) { + this.kind = value; + } + + private SCSpecFunctionV0 functionV0; + + public SCSpecFunctionV0 getFunctionV0() { + return this.functionV0; + } + + public void setFunctionV0(SCSpecFunctionV0 value) { + this.functionV0 = value; + } + + private SCSpecUDTStructV0 udtStructV0; + + public SCSpecUDTStructV0 getUdtStructV0() { + return this.udtStructV0; + } + + public void setUdtStructV0(SCSpecUDTStructV0 value) { + this.udtStructV0 = value; + } + + private SCSpecUDTUnionV0 udtUnionV0; + + public SCSpecUDTUnionV0 getUdtUnionV0() { + return this.udtUnionV0; + } + + public void setUdtUnionV0(SCSpecUDTUnionV0 value) { + this.udtUnionV0 = value; + } + + private SCSpecUDTEnumV0 udtEnumV0; + + public SCSpecUDTEnumV0 getUdtEnumV0() { + return this.udtEnumV0; + } + + public void setUdtEnumV0(SCSpecUDTEnumV0 value) { + this.udtEnumV0 = value; + } + + private SCSpecUDTErrorEnumV0 udtErrorEnumV0; + + public SCSpecUDTErrorEnumV0 getUdtErrorEnumV0() { + return this.udtErrorEnumV0; + } + + public void setUdtErrorEnumV0(SCSpecUDTErrorEnumV0 value) { + this.udtErrorEnumV0 = value; + } + + public static final class Builder { + private SCSpecEntryKind discriminant; + private SCSpecFunctionV0 functionV0; + private SCSpecUDTStructV0 udtStructV0; + private SCSpecUDTUnionV0 udtUnionV0; + private SCSpecUDTEnumV0 udtEnumV0; + private SCSpecUDTErrorEnumV0 udtErrorEnumV0; + + public Builder discriminant(SCSpecEntryKind discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder functionV0(SCSpecFunctionV0 functionV0) { + this.functionV0 = functionV0; + return this; + } + + public Builder udtStructV0(SCSpecUDTStructV0 udtStructV0) { + this.udtStructV0 = udtStructV0; + return this; + } + + public Builder udtUnionV0(SCSpecUDTUnionV0 udtUnionV0) { + this.udtUnionV0 = udtUnionV0; + return this; + } + + public Builder udtEnumV0(SCSpecUDTEnumV0 udtEnumV0) { + this.udtEnumV0 = udtEnumV0; + return this; + } + + public Builder udtErrorEnumV0(SCSpecUDTErrorEnumV0 udtErrorEnumV0) { + this.udtErrorEnumV0 = udtErrorEnumV0; + return this; + } + + public SCSpecEntry build() { + SCSpecEntry val = new SCSpecEntry(); + val.setDiscriminant(discriminant); + val.setFunctionV0(this.functionV0); + val.setUdtStructV0(this.udtStructV0); + val.setUdtUnionV0(this.udtUnionV0); + val.setUdtEnumV0(this.udtEnumV0); + val.setUdtErrorEnumV0(this.udtErrorEnumV0); + return val; + } + } + + public static void encode(XdrDataOutputStream stream, SCSpecEntry encodedSCSpecEntry) + throws IOException { + // Xdrgen::AST::Identifier + // SCSpecEntryKind + stream.writeInt(encodedSCSpecEntry.getDiscriminant().getValue()); + switch (encodedSCSpecEntry.getDiscriminant()) { + case SC_SPEC_ENTRY_FUNCTION_V0: + SCSpecFunctionV0.encode(stream, encodedSCSpecEntry.functionV0); + break; + case SC_SPEC_ENTRY_UDT_STRUCT_V0: + SCSpecUDTStructV0.encode(stream, encodedSCSpecEntry.udtStructV0); + break; + case SC_SPEC_ENTRY_UDT_UNION_V0: + SCSpecUDTUnionV0.encode(stream, encodedSCSpecEntry.udtUnionV0); + break; + case SC_SPEC_ENTRY_UDT_ENUM_V0: + SCSpecUDTEnumV0.encode(stream, encodedSCSpecEntry.udtEnumV0); + break; + case SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0: + SCSpecUDTErrorEnumV0.encode(stream, encodedSCSpecEntry.udtErrorEnumV0); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecEntry decode(XdrDataInputStream stream) throws IOException { + SCSpecEntry decodedSCSpecEntry = new SCSpecEntry(); + SCSpecEntryKind discriminant = SCSpecEntryKind.decode(stream); + decodedSCSpecEntry.setDiscriminant(discriminant); + switch (decodedSCSpecEntry.getDiscriminant()) { + case SC_SPEC_ENTRY_FUNCTION_V0: + decodedSCSpecEntry.functionV0 = SCSpecFunctionV0.decode(stream); + break; + case SC_SPEC_ENTRY_UDT_STRUCT_V0: + decodedSCSpecEntry.udtStructV0 = SCSpecUDTStructV0.decode(stream); + break; + case SC_SPEC_ENTRY_UDT_UNION_V0: + decodedSCSpecEntry.udtUnionV0 = SCSpecUDTUnionV0.decode(stream); + break; + case SC_SPEC_ENTRY_UDT_ENUM_V0: + decodedSCSpecEntry.udtEnumV0 = SCSpecUDTEnumV0.decode(stream); + break; + case SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0: + decodedSCSpecEntry.udtErrorEnumV0 = SCSpecUDTErrorEnumV0.decode(stream); + break; + } + return decodedSCSpecEntry; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.functionV0, + this.udtStructV0, + this.udtUnionV0, + this.udtEnumV0, + this.udtErrorEnumV0, + this.kind); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecEntry)) { + return false; + } + + SCSpecEntry other = (SCSpecEntry) object; + return Objects.equal(this.functionV0, other.functionV0) + && Objects.equal(this.udtStructV0, other.udtStructV0) + && Objects.equal(this.udtUnionV0, other.udtUnionV0) + && Objects.equal(this.udtEnumV0, other.udtEnumV0) + && Objects.equal(this.udtErrorEnumV0, other.udtErrorEnumV0) + && Objects.equal(this.kind, other.kind); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecEntryKind.java b/src/main/java/org/stellar/sdk/xdr/SCSpecEntryKind.java new file mode 100644 index 000000000..b4669fd52 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecEntryKind.java @@ -0,0 +1,64 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum SCSpecEntryKind +// { +// SC_SPEC_ENTRY_FUNCTION_V0 = 0, +// SC_SPEC_ENTRY_UDT_STRUCT_V0 = 1, +// SC_SPEC_ENTRY_UDT_UNION_V0 = 2, +// SC_SPEC_ENTRY_UDT_ENUM_V0 = 3, +// SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0 = 4 +// }; + +// =========================================================================== +public enum SCSpecEntryKind implements XdrElement { + SC_SPEC_ENTRY_FUNCTION_V0(0), + SC_SPEC_ENTRY_UDT_STRUCT_V0(1), + SC_SPEC_ENTRY_UDT_UNION_V0(2), + SC_SPEC_ENTRY_UDT_ENUM_V0(3), + SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0(4), + ; + private int mValue; + + SCSpecEntryKind(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static SCSpecEntryKind decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return SC_SPEC_ENTRY_FUNCTION_V0; + case 1: + return SC_SPEC_ENTRY_UDT_STRUCT_V0; + case 2: + return SC_SPEC_ENTRY_UDT_UNION_V0; + case 3: + return SC_SPEC_ENTRY_UDT_ENUM_V0; + case 4: + return SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, SCSpecEntryKind value) throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecFunctionInputV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecFunctionInputV0.java new file mode 100644 index 000000000..bc2befbea --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecFunctionInputV0.java @@ -0,0 +1,119 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCSpecFunctionInputV0 +// { +// string doc; +// string name<30>; +// SCSpecTypeDef type; +// }; + +// =========================================================================== +public class SCSpecFunctionInputV0 implements XdrElement { + public SCSpecFunctionInputV0() {} + + private XdrString doc; + + public XdrString getDoc() { + return this.doc; + } + + public void setDoc(XdrString value) { + this.doc = value; + } + + private XdrString name; + + public XdrString getName() { + return this.name; + } + + public void setName(XdrString value) { + this.name = value; + } + + private SCSpecTypeDef type; + + public SCSpecTypeDef getType() { + return this.type; + } + + public void setType(SCSpecTypeDef value) { + this.type = value; + } + + public static void encode( + XdrDataOutputStream stream, SCSpecFunctionInputV0 encodedSCSpecFunctionInputV0) + throws IOException { + encodedSCSpecFunctionInputV0.doc.encode(stream); + encodedSCSpecFunctionInputV0.name.encode(stream); + SCSpecTypeDef.encode(stream, encodedSCSpecFunctionInputV0.type); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecFunctionInputV0 decode(XdrDataInputStream stream) throws IOException { + SCSpecFunctionInputV0 decodedSCSpecFunctionInputV0 = new SCSpecFunctionInputV0(); + decodedSCSpecFunctionInputV0.doc = XdrString.decode(stream, SC_SPEC_DOC_LIMIT); + decodedSCSpecFunctionInputV0.name = XdrString.decode(stream, 30); + decodedSCSpecFunctionInputV0.type = SCSpecTypeDef.decode(stream); + return decodedSCSpecFunctionInputV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.doc, this.name, this.type); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecFunctionInputV0)) { + return false; + } + + SCSpecFunctionInputV0 other = (SCSpecFunctionInputV0) object; + return Objects.equal(this.doc, other.doc) + && Objects.equal(this.name, other.name) + && Objects.equal(this.type, other.type); + } + + public static final class Builder { + private XdrString doc; + private XdrString name; + private SCSpecTypeDef type; + + public Builder doc(XdrString doc) { + this.doc = doc; + return this; + } + + public Builder name(XdrString name) { + this.name = name; + return this; + } + + public Builder type(SCSpecTypeDef type) { + this.type = type; + return this; + } + + public SCSpecFunctionInputV0 build() { + SCSpecFunctionInputV0 val = new SCSpecFunctionInputV0(); + val.setDoc(this.doc); + val.setName(this.name); + val.setType(this.type); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecFunctionV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecFunctionV0.java new file mode 100644 index 000000000..a616cab12 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecFunctionV0.java @@ -0,0 +1,157 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct SCSpecFunctionV0 +// { +// string doc; +// SCSymbol name; +// SCSpecFunctionInputV0 inputs<10>; +// SCSpecTypeDef outputs<1>; +// }; + +// =========================================================================== +public class SCSpecFunctionV0 implements XdrElement { + public SCSpecFunctionV0() {} + + private XdrString doc; + + public XdrString getDoc() { + return this.doc; + } + + public void setDoc(XdrString value) { + this.doc = value; + } + + private SCSymbol name; + + public SCSymbol getName() { + return this.name; + } + + public void setName(SCSymbol value) { + this.name = value; + } + + private SCSpecFunctionInputV0[] inputs; + + public SCSpecFunctionInputV0[] getInputs() { + return this.inputs; + } + + public void setInputs(SCSpecFunctionInputV0[] value) { + this.inputs = value; + } + + private SCSpecTypeDef[] outputs; + + public SCSpecTypeDef[] getOutputs() { + return this.outputs; + } + + public void setOutputs(SCSpecTypeDef[] value) { + this.outputs = value; + } + + public static void encode(XdrDataOutputStream stream, SCSpecFunctionV0 encodedSCSpecFunctionV0) + throws IOException { + encodedSCSpecFunctionV0.doc.encode(stream); + SCSymbol.encode(stream, encodedSCSpecFunctionV0.name); + int inputssize = encodedSCSpecFunctionV0.getInputs().length; + stream.writeInt(inputssize); + for (int i = 0; i < inputssize; i++) { + SCSpecFunctionInputV0.encode(stream, encodedSCSpecFunctionV0.inputs[i]); + } + int outputssize = encodedSCSpecFunctionV0.getOutputs().length; + stream.writeInt(outputssize); + for (int i = 0; i < outputssize; i++) { + SCSpecTypeDef.encode(stream, encodedSCSpecFunctionV0.outputs[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecFunctionV0 decode(XdrDataInputStream stream) throws IOException { + SCSpecFunctionV0 decodedSCSpecFunctionV0 = new SCSpecFunctionV0(); + decodedSCSpecFunctionV0.doc = XdrString.decode(stream, SC_SPEC_DOC_LIMIT); + decodedSCSpecFunctionV0.name = SCSymbol.decode(stream); + int inputssize = stream.readInt(); + decodedSCSpecFunctionV0.inputs = new SCSpecFunctionInputV0[inputssize]; + for (int i = 0; i < inputssize; i++) { + decodedSCSpecFunctionV0.inputs[i] = SCSpecFunctionInputV0.decode(stream); + } + int outputssize = stream.readInt(); + decodedSCSpecFunctionV0.outputs = new SCSpecTypeDef[outputssize]; + for (int i = 0; i < outputssize; i++) { + decodedSCSpecFunctionV0.outputs[i] = SCSpecTypeDef.decode(stream); + } + return decodedSCSpecFunctionV0; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.doc, this.name, Arrays.hashCode(this.inputs), Arrays.hashCode(this.outputs)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecFunctionV0)) { + return false; + } + + SCSpecFunctionV0 other = (SCSpecFunctionV0) object; + return Objects.equal(this.doc, other.doc) + && Objects.equal(this.name, other.name) + && Arrays.equals(this.inputs, other.inputs) + && Arrays.equals(this.outputs, other.outputs); + } + + public static final class Builder { + private XdrString doc; + private SCSymbol name; + private SCSpecFunctionInputV0[] inputs; + private SCSpecTypeDef[] outputs; + + public Builder doc(XdrString doc) { + this.doc = doc; + return this; + } + + public Builder name(SCSymbol name) { + this.name = name; + return this; + } + + public Builder inputs(SCSpecFunctionInputV0[] inputs) { + this.inputs = inputs; + return this; + } + + public Builder outputs(SCSpecTypeDef[] outputs) { + this.outputs = outputs; + return this; + } + + public SCSpecFunctionV0 build() { + SCSpecFunctionV0 val = new SCSpecFunctionV0(); + val.setDoc(this.doc); + val.setName(this.name); + val.setInputs(this.inputs); + val.setOutputs(this.outputs); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecType.java b/src/main/java/org/stellar/sdk/xdr/SCSpecType.java new file mode 100644 index 000000000..7829ff041 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecType.java @@ -0,0 +1,154 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum SCSpecType +// { +// SC_SPEC_TYPE_VAL = 0, +// +// // Types with no parameters. +// SC_SPEC_TYPE_BOOL = 1, +// SC_SPEC_TYPE_VOID = 2, +// SC_SPEC_TYPE_ERROR = 3, +// SC_SPEC_TYPE_U32 = 4, +// SC_SPEC_TYPE_I32 = 5, +// SC_SPEC_TYPE_U64 = 6, +// SC_SPEC_TYPE_I64 = 7, +// SC_SPEC_TYPE_TIMEPOINT = 8, +// SC_SPEC_TYPE_DURATION = 9, +// SC_SPEC_TYPE_U128 = 10, +// SC_SPEC_TYPE_I128 = 11, +// SC_SPEC_TYPE_U256 = 12, +// SC_SPEC_TYPE_I256 = 13, +// SC_SPEC_TYPE_BYTES = 14, +// SC_SPEC_TYPE_STRING = 16, +// SC_SPEC_TYPE_SYMBOL = 17, +// SC_SPEC_TYPE_ADDRESS = 19, +// +// // Types with parameters. +// SC_SPEC_TYPE_OPTION = 1000, +// SC_SPEC_TYPE_RESULT = 1001, +// SC_SPEC_TYPE_VEC = 1002, +// SC_SPEC_TYPE_SET = 1003, +// SC_SPEC_TYPE_MAP = 1004, +// SC_SPEC_TYPE_TUPLE = 1005, +// SC_SPEC_TYPE_BYTES_N = 1006, +// +// // User defined types. +// SC_SPEC_TYPE_UDT = 2000 +// }; + +// =========================================================================== +public enum SCSpecType implements XdrElement { + SC_SPEC_TYPE_VAL(0), + SC_SPEC_TYPE_BOOL(1), + SC_SPEC_TYPE_VOID(2), + SC_SPEC_TYPE_ERROR(3), + SC_SPEC_TYPE_U32(4), + SC_SPEC_TYPE_I32(5), + SC_SPEC_TYPE_U64(6), + SC_SPEC_TYPE_I64(7), + SC_SPEC_TYPE_TIMEPOINT(8), + SC_SPEC_TYPE_DURATION(9), + SC_SPEC_TYPE_U128(10), + SC_SPEC_TYPE_I128(11), + SC_SPEC_TYPE_U256(12), + SC_SPEC_TYPE_I256(13), + SC_SPEC_TYPE_BYTES(14), + SC_SPEC_TYPE_STRING(16), + SC_SPEC_TYPE_SYMBOL(17), + SC_SPEC_TYPE_ADDRESS(19), + SC_SPEC_TYPE_OPTION(1000), + SC_SPEC_TYPE_RESULT(1001), + SC_SPEC_TYPE_VEC(1002), + SC_SPEC_TYPE_SET(1003), + SC_SPEC_TYPE_MAP(1004), + SC_SPEC_TYPE_TUPLE(1005), + SC_SPEC_TYPE_BYTES_N(1006), + SC_SPEC_TYPE_UDT(2000), + ; + private int mValue; + + SCSpecType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static SCSpecType decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return SC_SPEC_TYPE_VAL; + case 1: + return SC_SPEC_TYPE_BOOL; + case 2: + return SC_SPEC_TYPE_VOID; + case 3: + return SC_SPEC_TYPE_ERROR; + case 4: + return SC_SPEC_TYPE_U32; + case 5: + return SC_SPEC_TYPE_I32; + case 6: + return SC_SPEC_TYPE_U64; + case 7: + return SC_SPEC_TYPE_I64; + case 8: + return SC_SPEC_TYPE_TIMEPOINT; + case 9: + return SC_SPEC_TYPE_DURATION; + case 10: + return SC_SPEC_TYPE_U128; + case 11: + return SC_SPEC_TYPE_I128; + case 12: + return SC_SPEC_TYPE_U256; + case 13: + return SC_SPEC_TYPE_I256; + case 14: + return SC_SPEC_TYPE_BYTES; + case 16: + return SC_SPEC_TYPE_STRING; + case 17: + return SC_SPEC_TYPE_SYMBOL; + case 19: + return SC_SPEC_TYPE_ADDRESS; + case 1000: + return SC_SPEC_TYPE_OPTION; + case 1001: + return SC_SPEC_TYPE_RESULT; + case 1002: + return SC_SPEC_TYPE_VEC; + case 1003: + return SC_SPEC_TYPE_SET; + case 1004: + return SC_SPEC_TYPE_MAP; + case 1005: + return SC_SPEC_TYPE_TUPLE; + case 1006: + return SC_SPEC_TYPE_BYTES_N; + case 2000: + return SC_SPEC_TYPE_UDT; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, SCSpecType value) throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeBytesN.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeBytesN.java new file mode 100644 index 000000000..f00387ccd --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeBytesN.java @@ -0,0 +1,76 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCSpecTypeBytesN +// { +// uint32 n; +// }; + +// =========================================================================== +public class SCSpecTypeBytesN implements XdrElement { + public SCSpecTypeBytesN() {} + + private Uint32 n; + + public Uint32 getN() { + return this.n; + } + + public void setN(Uint32 value) { + this.n = value; + } + + public static void encode(XdrDataOutputStream stream, SCSpecTypeBytesN encodedSCSpecTypeBytesN) + throws IOException { + Uint32.encode(stream, encodedSCSpecTypeBytesN.n); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecTypeBytesN decode(XdrDataInputStream stream) throws IOException { + SCSpecTypeBytesN decodedSCSpecTypeBytesN = new SCSpecTypeBytesN(); + decodedSCSpecTypeBytesN.n = Uint32.decode(stream); + return decodedSCSpecTypeBytesN; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.n); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecTypeBytesN)) { + return false; + } + + SCSpecTypeBytesN other = (SCSpecTypeBytesN) object; + return Objects.equal(this.n, other.n); + } + + public static final class Builder { + private Uint32 n; + + public Builder n(Uint32 n) { + this.n = n; + return this; + } + + public SCSpecTypeBytesN build() { + SCSpecTypeBytesN val = new SCSpecTypeBytesN(); + val.setN(this.n); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeDef.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeDef.java new file mode 100644 index 000000000..4efedf536 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeDef.java @@ -0,0 +1,356 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union SCSpecTypeDef switch (SCSpecType type) +// { +// case SC_SPEC_TYPE_VAL: +// case SC_SPEC_TYPE_BOOL: +// case SC_SPEC_TYPE_VOID: +// case SC_SPEC_TYPE_ERROR: +// case SC_SPEC_TYPE_U32: +// case SC_SPEC_TYPE_I32: +// case SC_SPEC_TYPE_U64: +// case SC_SPEC_TYPE_I64: +// case SC_SPEC_TYPE_TIMEPOINT: +// case SC_SPEC_TYPE_DURATION: +// case SC_SPEC_TYPE_U128: +// case SC_SPEC_TYPE_I128: +// case SC_SPEC_TYPE_U256: +// case SC_SPEC_TYPE_I256: +// case SC_SPEC_TYPE_BYTES: +// case SC_SPEC_TYPE_STRING: +// case SC_SPEC_TYPE_SYMBOL: +// case SC_SPEC_TYPE_ADDRESS: +// void; +// case SC_SPEC_TYPE_OPTION: +// SCSpecTypeOption option; +// case SC_SPEC_TYPE_RESULT: +// SCSpecTypeResult result; +// case SC_SPEC_TYPE_VEC: +// SCSpecTypeVec vec; +// case SC_SPEC_TYPE_MAP: +// SCSpecTypeMap map; +// case SC_SPEC_TYPE_SET: +// SCSpecTypeSet set; +// case SC_SPEC_TYPE_TUPLE: +// SCSpecTypeTuple tuple; +// case SC_SPEC_TYPE_BYTES_N: +// SCSpecTypeBytesN bytesN; +// case SC_SPEC_TYPE_UDT: +// SCSpecTypeUDT udt; +// }; + +// =========================================================================== +public class SCSpecTypeDef implements XdrElement { + public SCSpecTypeDef() {} + + SCSpecType type; + + public SCSpecType getDiscriminant() { + return this.type; + } + + public void setDiscriminant(SCSpecType value) { + this.type = value; + } + + private SCSpecTypeOption option; + + public SCSpecTypeOption getOption() { + return this.option; + } + + public void setOption(SCSpecTypeOption value) { + this.option = value; + } + + private SCSpecTypeResult result; + + public SCSpecTypeResult getResult() { + return this.result; + } + + public void setResult(SCSpecTypeResult value) { + this.result = value; + } + + private SCSpecTypeVec vec; + + public SCSpecTypeVec getVec() { + return this.vec; + } + + public void setVec(SCSpecTypeVec value) { + this.vec = value; + } + + private SCSpecTypeMap map; + + public SCSpecTypeMap getMap() { + return this.map; + } + + public void setMap(SCSpecTypeMap value) { + this.map = value; + } + + private SCSpecTypeSet set; + + public SCSpecTypeSet getSet() { + return this.set; + } + + public void setSet(SCSpecTypeSet value) { + this.set = value; + } + + private SCSpecTypeTuple tuple; + + public SCSpecTypeTuple getTuple() { + return this.tuple; + } + + public void setTuple(SCSpecTypeTuple value) { + this.tuple = value; + } + + private SCSpecTypeBytesN bytesN; + + public SCSpecTypeBytesN getBytesN() { + return this.bytesN; + } + + public void setBytesN(SCSpecTypeBytesN value) { + this.bytesN = value; + } + + private SCSpecTypeUDT udt; + + public SCSpecTypeUDT getUdt() { + return this.udt; + } + + public void setUdt(SCSpecTypeUDT value) { + this.udt = value; + } + + public static final class Builder { + private SCSpecType discriminant; + private SCSpecTypeOption option; + private SCSpecTypeResult result; + private SCSpecTypeVec vec; + private SCSpecTypeMap map; + private SCSpecTypeSet set; + private SCSpecTypeTuple tuple; + private SCSpecTypeBytesN bytesN; + private SCSpecTypeUDT udt; + + public Builder discriminant(SCSpecType discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder option(SCSpecTypeOption option) { + this.option = option; + return this; + } + + public Builder result(SCSpecTypeResult result) { + this.result = result; + return this; + } + + public Builder vec(SCSpecTypeVec vec) { + this.vec = vec; + return this; + } + + public Builder map(SCSpecTypeMap map) { + this.map = map; + return this; + } + + public Builder set(SCSpecTypeSet set) { + this.set = set; + return this; + } + + public Builder tuple(SCSpecTypeTuple tuple) { + this.tuple = tuple; + return this; + } + + public Builder bytesN(SCSpecTypeBytesN bytesN) { + this.bytesN = bytesN; + return this; + } + + public Builder udt(SCSpecTypeUDT udt) { + this.udt = udt; + return this; + } + + public SCSpecTypeDef build() { + SCSpecTypeDef val = new SCSpecTypeDef(); + val.setDiscriminant(discriminant); + val.setOption(this.option); + val.setResult(this.result); + val.setVec(this.vec); + val.setMap(this.map); + val.setSet(this.set); + val.setTuple(this.tuple); + val.setBytesN(this.bytesN); + val.setUdt(this.udt); + return val; + } + } + + public static void encode(XdrDataOutputStream stream, SCSpecTypeDef encodedSCSpecTypeDef) + throws IOException { + // Xdrgen::AST::Identifier + // SCSpecType + stream.writeInt(encodedSCSpecTypeDef.getDiscriminant().getValue()); + switch (encodedSCSpecTypeDef.getDiscriminant()) { + case SC_SPEC_TYPE_VAL: + case SC_SPEC_TYPE_BOOL: + case SC_SPEC_TYPE_VOID: + case SC_SPEC_TYPE_ERROR: + case SC_SPEC_TYPE_U32: + case SC_SPEC_TYPE_I32: + case SC_SPEC_TYPE_U64: + case SC_SPEC_TYPE_I64: + case SC_SPEC_TYPE_TIMEPOINT: + case SC_SPEC_TYPE_DURATION: + case SC_SPEC_TYPE_U128: + case SC_SPEC_TYPE_I128: + case SC_SPEC_TYPE_U256: + case SC_SPEC_TYPE_I256: + case SC_SPEC_TYPE_BYTES: + case SC_SPEC_TYPE_STRING: + case SC_SPEC_TYPE_SYMBOL: + case SC_SPEC_TYPE_ADDRESS: + break; + case SC_SPEC_TYPE_OPTION: + SCSpecTypeOption.encode(stream, encodedSCSpecTypeDef.option); + break; + case SC_SPEC_TYPE_RESULT: + SCSpecTypeResult.encode(stream, encodedSCSpecTypeDef.result); + break; + case SC_SPEC_TYPE_VEC: + SCSpecTypeVec.encode(stream, encodedSCSpecTypeDef.vec); + break; + case SC_SPEC_TYPE_MAP: + SCSpecTypeMap.encode(stream, encodedSCSpecTypeDef.map); + break; + case SC_SPEC_TYPE_SET: + SCSpecTypeSet.encode(stream, encodedSCSpecTypeDef.set); + break; + case SC_SPEC_TYPE_TUPLE: + SCSpecTypeTuple.encode(stream, encodedSCSpecTypeDef.tuple); + break; + case SC_SPEC_TYPE_BYTES_N: + SCSpecTypeBytesN.encode(stream, encodedSCSpecTypeDef.bytesN); + break; + case SC_SPEC_TYPE_UDT: + SCSpecTypeUDT.encode(stream, encodedSCSpecTypeDef.udt); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecTypeDef decode(XdrDataInputStream stream) throws IOException { + SCSpecTypeDef decodedSCSpecTypeDef = new SCSpecTypeDef(); + SCSpecType discriminant = SCSpecType.decode(stream); + decodedSCSpecTypeDef.setDiscriminant(discriminant); + switch (decodedSCSpecTypeDef.getDiscriminant()) { + case SC_SPEC_TYPE_VAL: + case SC_SPEC_TYPE_BOOL: + case SC_SPEC_TYPE_VOID: + case SC_SPEC_TYPE_ERROR: + case SC_SPEC_TYPE_U32: + case SC_SPEC_TYPE_I32: + case SC_SPEC_TYPE_U64: + case SC_SPEC_TYPE_I64: + case SC_SPEC_TYPE_TIMEPOINT: + case SC_SPEC_TYPE_DURATION: + case SC_SPEC_TYPE_U128: + case SC_SPEC_TYPE_I128: + case SC_SPEC_TYPE_U256: + case SC_SPEC_TYPE_I256: + case SC_SPEC_TYPE_BYTES: + case SC_SPEC_TYPE_STRING: + case SC_SPEC_TYPE_SYMBOL: + case SC_SPEC_TYPE_ADDRESS: + break; + case SC_SPEC_TYPE_OPTION: + decodedSCSpecTypeDef.option = SCSpecTypeOption.decode(stream); + break; + case SC_SPEC_TYPE_RESULT: + decodedSCSpecTypeDef.result = SCSpecTypeResult.decode(stream); + break; + case SC_SPEC_TYPE_VEC: + decodedSCSpecTypeDef.vec = SCSpecTypeVec.decode(stream); + break; + case SC_SPEC_TYPE_MAP: + decodedSCSpecTypeDef.map = SCSpecTypeMap.decode(stream); + break; + case SC_SPEC_TYPE_SET: + decodedSCSpecTypeDef.set = SCSpecTypeSet.decode(stream); + break; + case SC_SPEC_TYPE_TUPLE: + decodedSCSpecTypeDef.tuple = SCSpecTypeTuple.decode(stream); + break; + case SC_SPEC_TYPE_BYTES_N: + decodedSCSpecTypeDef.bytesN = SCSpecTypeBytesN.decode(stream); + break; + case SC_SPEC_TYPE_UDT: + decodedSCSpecTypeDef.udt = SCSpecTypeUDT.decode(stream); + break; + } + return decodedSCSpecTypeDef; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.option, + this.result, + this.vec, + this.map, + this.set, + this.tuple, + this.bytesN, + this.udt, + this.type); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecTypeDef)) { + return false; + } + + SCSpecTypeDef other = (SCSpecTypeDef) object; + return Objects.equal(this.option, other.option) + && Objects.equal(this.result, other.result) + && Objects.equal(this.vec, other.vec) + && Objects.equal(this.map, other.map) + && Objects.equal(this.set, other.set) + && Objects.equal(this.tuple, other.tuple) + && Objects.equal(this.bytesN, other.bytesN) + && Objects.equal(this.udt, other.udt) + && Objects.equal(this.type, other.type); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeMap.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeMap.java new file mode 100644 index 000000000..c55a50d8e --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeMap.java @@ -0,0 +1,97 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCSpecTypeMap +// { +// SCSpecTypeDef keyType; +// SCSpecTypeDef valueType; +// }; + +// =========================================================================== +public class SCSpecTypeMap implements XdrElement { + public SCSpecTypeMap() {} + + private SCSpecTypeDef keyType; + + public SCSpecTypeDef getKeyType() { + return this.keyType; + } + + public void setKeyType(SCSpecTypeDef value) { + this.keyType = value; + } + + private SCSpecTypeDef valueType; + + public SCSpecTypeDef getValueType() { + return this.valueType; + } + + public void setValueType(SCSpecTypeDef value) { + this.valueType = value; + } + + public static void encode(XdrDataOutputStream stream, SCSpecTypeMap encodedSCSpecTypeMap) + throws IOException { + SCSpecTypeDef.encode(stream, encodedSCSpecTypeMap.keyType); + SCSpecTypeDef.encode(stream, encodedSCSpecTypeMap.valueType); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecTypeMap decode(XdrDataInputStream stream) throws IOException { + SCSpecTypeMap decodedSCSpecTypeMap = new SCSpecTypeMap(); + decodedSCSpecTypeMap.keyType = SCSpecTypeDef.decode(stream); + decodedSCSpecTypeMap.valueType = SCSpecTypeDef.decode(stream); + return decodedSCSpecTypeMap; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.keyType, this.valueType); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecTypeMap)) { + return false; + } + + SCSpecTypeMap other = (SCSpecTypeMap) object; + return Objects.equal(this.keyType, other.keyType) + && Objects.equal(this.valueType, other.valueType); + } + + public static final class Builder { + private SCSpecTypeDef keyType; + private SCSpecTypeDef valueType; + + public Builder keyType(SCSpecTypeDef keyType) { + this.keyType = keyType; + return this; + } + + public Builder valueType(SCSpecTypeDef valueType) { + this.valueType = valueType; + return this; + } + + public SCSpecTypeMap build() { + SCSpecTypeMap val = new SCSpecTypeMap(); + val.setKeyType(this.keyType); + val.setValueType(this.valueType); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeOption.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeOption.java new file mode 100644 index 000000000..18dcc55cd --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeOption.java @@ -0,0 +1,76 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCSpecTypeOption +// { +// SCSpecTypeDef valueType; +// }; + +// =========================================================================== +public class SCSpecTypeOption implements XdrElement { + public SCSpecTypeOption() {} + + private SCSpecTypeDef valueType; + + public SCSpecTypeDef getValueType() { + return this.valueType; + } + + public void setValueType(SCSpecTypeDef value) { + this.valueType = value; + } + + public static void encode(XdrDataOutputStream stream, SCSpecTypeOption encodedSCSpecTypeOption) + throws IOException { + SCSpecTypeDef.encode(stream, encodedSCSpecTypeOption.valueType); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecTypeOption decode(XdrDataInputStream stream) throws IOException { + SCSpecTypeOption decodedSCSpecTypeOption = new SCSpecTypeOption(); + decodedSCSpecTypeOption.valueType = SCSpecTypeDef.decode(stream); + return decodedSCSpecTypeOption; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.valueType); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecTypeOption)) { + return false; + } + + SCSpecTypeOption other = (SCSpecTypeOption) object; + return Objects.equal(this.valueType, other.valueType); + } + + public static final class Builder { + private SCSpecTypeDef valueType; + + public Builder valueType(SCSpecTypeDef valueType) { + this.valueType = valueType; + return this; + } + + public SCSpecTypeOption build() { + SCSpecTypeOption val = new SCSpecTypeOption(); + val.setValueType(this.valueType); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeResult.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeResult.java new file mode 100644 index 000000000..35696f14e --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeResult.java @@ -0,0 +1,97 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCSpecTypeResult +// { +// SCSpecTypeDef okType; +// SCSpecTypeDef errorType; +// }; + +// =========================================================================== +public class SCSpecTypeResult implements XdrElement { + public SCSpecTypeResult() {} + + private SCSpecTypeDef okType; + + public SCSpecTypeDef getOkType() { + return this.okType; + } + + public void setOkType(SCSpecTypeDef value) { + this.okType = value; + } + + private SCSpecTypeDef errorType; + + public SCSpecTypeDef getErrorType() { + return this.errorType; + } + + public void setErrorType(SCSpecTypeDef value) { + this.errorType = value; + } + + public static void encode(XdrDataOutputStream stream, SCSpecTypeResult encodedSCSpecTypeResult) + throws IOException { + SCSpecTypeDef.encode(stream, encodedSCSpecTypeResult.okType); + SCSpecTypeDef.encode(stream, encodedSCSpecTypeResult.errorType); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecTypeResult decode(XdrDataInputStream stream) throws IOException { + SCSpecTypeResult decodedSCSpecTypeResult = new SCSpecTypeResult(); + decodedSCSpecTypeResult.okType = SCSpecTypeDef.decode(stream); + decodedSCSpecTypeResult.errorType = SCSpecTypeDef.decode(stream); + return decodedSCSpecTypeResult; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.okType, this.errorType); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecTypeResult)) { + return false; + } + + SCSpecTypeResult other = (SCSpecTypeResult) object; + return Objects.equal(this.okType, other.okType) + && Objects.equal(this.errorType, other.errorType); + } + + public static final class Builder { + private SCSpecTypeDef okType; + private SCSpecTypeDef errorType; + + public Builder okType(SCSpecTypeDef okType) { + this.okType = okType; + return this; + } + + public Builder errorType(SCSpecTypeDef errorType) { + this.errorType = errorType; + return this; + } + + public SCSpecTypeResult build() { + SCSpecTypeResult val = new SCSpecTypeResult(); + val.setOkType(this.okType); + val.setErrorType(this.errorType); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeSet.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeSet.java new file mode 100644 index 000000000..3a09358ee --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeSet.java @@ -0,0 +1,76 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCSpecTypeSet +// { +// SCSpecTypeDef elementType; +// }; + +// =========================================================================== +public class SCSpecTypeSet implements XdrElement { + public SCSpecTypeSet() {} + + private SCSpecTypeDef elementType; + + public SCSpecTypeDef getElementType() { + return this.elementType; + } + + public void setElementType(SCSpecTypeDef value) { + this.elementType = value; + } + + public static void encode(XdrDataOutputStream stream, SCSpecTypeSet encodedSCSpecTypeSet) + throws IOException { + SCSpecTypeDef.encode(stream, encodedSCSpecTypeSet.elementType); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecTypeSet decode(XdrDataInputStream stream) throws IOException { + SCSpecTypeSet decodedSCSpecTypeSet = new SCSpecTypeSet(); + decodedSCSpecTypeSet.elementType = SCSpecTypeDef.decode(stream); + return decodedSCSpecTypeSet; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.elementType); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecTypeSet)) { + return false; + } + + SCSpecTypeSet other = (SCSpecTypeSet) object; + return Objects.equal(this.elementType, other.elementType); + } + + public static final class Builder { + private SCSpecTypeDef elementType; + + public Builder elementType(SCSpecTypeDef elementType) { + this.elementType = elementType; + return this; + } + + public SCSpecTypeSet build() { + SCSpecTypeSet val = new SCSpecTypeSet(); + val.setElementType(this.elementType); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeTuple.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeTuple.java new file mode 100644 index 000000000..664789374 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeTuple.java @@ -0,0 +1,84 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct SCSpecTypeTuple +// { +// SCSpecTypeDef valueTypes<12>; +// }; + +// =========================================================================== +public class SCSpecTypeTuple implements XdrElement { + public SCSpecTypeTuple() {} + + private SCSpecTypeDef[] valueTypes; + + public SCSpecTypeDef[] getValueTypes() { + return this.valueTypes; + } + + public void setValueTypes(SCSpecTypeDef[] value) { + this.valueTypes = value; + } + + public static void encode(XdrDataOutputStream stream, SCSpecTypeTuple encodedSCSpecTypeTuple) + throws IOException { + int valueTypessize = encodedSCSpecTypeTuple.getValueTypes().length; + stream.writeInt(valueTypessize); + for (int i = 0; i < valueTypessize; i++) { + SCSpecTypeDef.encode(stream, encodedSCSpecTypeTuple.valueTypes[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecTypeTuple decode(XdrDataInputStream stream) throws IOException { + SCSpecTypeTuple decodedSCSpecTypeTuple = new SCSpecTypeTuple(); + int valueTypessize = stream.readInt(); + decodedSCSpecTypeTuple.valueTypes = new SCSpecTypeDef[valueTypessize]; + for (int i = 0; i < valueTypessize; i++) { + decodedSCSpecTypeTuple.valueTypes[i] = SCSpecTypeDef.decode(stream); + } + return decodedSCSpecTypeTuple; + } + + @Override + public int hashCode() { + return Arrays.hashCode(this.valueTypes); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecTypeTuple)) { + return false; + } + + SCSpecTypeTuple other = (SCSpecTypeTuple) object; + return Arrays.equals(this.valueTypes, other.valueTypes); + } + + public static final class Builder { + private SCSpecTypeDef[] valueTypes; + + public Builder valueTypes(SCSpecTypeDef[] valueTypes) { + this.valueTypes = valueTypes; + return this; + } + + public SCSpecTypeTuple build() { + SCSpecTypeTuple val = new SCSpecTypeTuple(); + val.setValueTypes(this.valueTypes); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeUDT.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeUDT.java new file mode 100644 index 000000000..0a7427f0b --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeUDT.java @@ -0,0 +1,76 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCSpecTypeUDT +// { +// string name<60>; +// }; + +// =========================================================================== +public class SCSpecTypeUDT implements XdrElement { + public SCSpecTypeUDT() {} + + private XdrString name; + + public XdrString getName() { + return this.name; + } + + public void setName(XdrString value) { + this.name = value; + } + + public static void encode(XdrDataOutputStream stream, SCSpecTypeUDT encodedSCSpecTypeUDT) + throws IOException { + encodedSCSpecTypeUDT.name.encode(stream); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecTypeUDT decode(XdrDataInputStream stream) throws IOException { + SCSpecTypeUDT decodedSCSpecTypeUDT = new SCSpecTypeUDT(); + decodedSCSpecTypeUDT.name = XdrString.decode(stream, 60); + return decodedSCSpecTypeUDT; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.name); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecTypeUDT)) { + return false; + } + + SCSpecTypeUDT other = (SCSpecTypeUDT) object; + return Objects.equal(this.name, other.name); + } + + public static final class Builder { + private XdrString name; + + public Builder name(XdrString name) { + this.name = name; + return this; + } + + public SCSpecTypeUDT build() { + SCSpecTypeUDT val = new SCSpecTypeUDT(); + val.setName(this.name); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeVec.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeVec.java new file mode 100644 index 000000000..d26aa0995 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeVec.java @@ -0,0 +1,76 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCSpecTypeVec +// { +// SCSpecTypeDef elementType; +// }; + +// =========================================================================== +public class SCSpecTypeVec implements XdrElement { + public SCSpecTypeVec() {} + + private SCSpecTypeDef elementType; + + public SCSpecTypeDef getElementType() { + return this.elementType; + } + + public void setElementType(SCSpecTypeDef value) { + this.elementType = value; + } + + public static void encode(XdrDataOutputStream stream, SCSpecTypeVec encodedSCSpecTypeVec) + throws IOException { + SCSpecTypeDef.encode(stream, encodedSCSpecTypeVec.elementType); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecTypeVec decode(XdrDataInputStream stream) throws IOException { + SCSpecTypeVec decodedSCSpecTypeVec = new SCSpecTypeVec(); + decodedSCSpecTypeVec.elementType = SCSpecTypeDef.decode(stream); + return decodedSCSpecTypeVec; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.elementType); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecTypeVec)) { + return false; + } + + SCSpecTypeVec other = (SCSpecTypeVec) object; + return Objects.equal(this.elementType, other.elementType); + } + + public static final class Builder { + private SCSpecTypeDef elementType; + + public Builder elementType(SCSpecTypeDef elementType) { + this.elementType = elementType; + return this; + } + + public SCSpecTypeVec build() { + SCSpecTypeVec val = new SCSpecTypeVec(); + val.setElementType(this.elementType); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumCaseV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumCaseV0.java new file mode 100644 index 000000000..d2477e240 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumCaseV0.java @@ -0,0 +1,119 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCSpecUDTEnumCaseV0 +// { +// string doc; +// string name<60>; +// uint32 value; +// }; + +// =========================================================================== +public class SCSpecUDTEnumCaseV0 implements XdrElement { + public SCSpecUDTEnumCaseV0() {} + + private XdrString doc; + + public XdrString getDoc() { + return this.doc; + } + + public void setDoc(XdrString value) { + this.doc = value; + } + + private XdrString name; + + public XdrString getName() { + return this.name; + } + + public void setName(XdrString value) { + this.name = value; + } + + private Uint32 value; + + public Uint32 getValue() { + return this.value; + } + + public void setValue(Uint32 value) { + this.value = value; + } + + public static void encode( + XdrDataOutputStream stream, SCSpecUDTEnumCaseV0 encodedSCSpecUDTEnumCaseV0) + throws IOException { + encodedSCSpecUDTEnumCaseV0.doc.encode(stream); + encodedSCSpecUDTEnumCaseV0.name.encode(stream); + Uint32.encode(stream, encodedSCSpecUDTEnumCaseV0.value); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecUDTEnumCaseV0 decode(XdrDataInputStream stream) throws IOException { + SCSpecUDTEnumCaseV0 decodedSCSpecUDTEnumCaseV0 = new SCSpecUDTEnumCaseV0(); + decodedSCSpecUDTEnumCaseV0.doc = XdrString.decode(stream, SC_SPEC_DOC_LIMIT); + decodedSCSpecUDTEnumCaseV0.name = XdrString.decode(stream, 60); + decodedSCSpecUDTEnumCaseV0.value = Uint32.decode(stream); + return decodedSCSpecUDTEnumCaseV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.doc, this.name, this.value); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecUDTEnumCaseV0)) { + return false; + } + + SCSpecUDTEnumCaseV0 other = (SCSpecUDTEnumCaseV0) object; + return Objects.equal(this.doc, other.doc) + && Objects.equal(this.name, other.name) + && Objects.equal(this.value, other.value); + } + + public static final class Builder { + private XdrString doc; + private XdrString name; + private Uint32 value; + + public Builder doc(XdrString doc) { + this.doc = doc; + return this; + } + + public Builder name(XdrString name) { + this.name = name; + return this; + } + + public Builder value(Uint32 value) { + this.value = value; + return this; + } + + public SCSpecUDTEnumCaseV0 build() { + SCSpecUDTEnumCaseV0 val = new SCSpecUDTEnumCaseV0(); + val.setDoc(this.doc); + val.setName(this.name); + val.setValue(this.value); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumV0.java new file mode 100644 index 000000000..6af62f4bf --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumV0.java @@ -0,0 +1,148 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct SCSpecUDTEnumV0 +// { +// string doc; +// string lib<80>; +// string name<60>; +// SCSpecUDTEnumCaseV0 cases<50>; +// }; + +// =========================================================================== +public class SCSpecUDTEnumV0 implements XdrElement { + public SCSpecUDTEnumV0() {} + + private XdrString doc; + + public XdrString getDoc() { + return this.doc; + } + + public void setDoc(XdrString value) { + this.doc = value; + } + + private XdrString lib; + + public XdrString getLib() { + return this.lib; + } + + public void setLib(XdrString value) { + this.lib = value; + } + + private XdrString name; + + public XdrString getName() { + return this.name; + } + + public void setName(XdrString value) { + this.name = value; + } + + private SCSpecUDTEnumCaseV0[] cases; + + public SCSpecUDTEnumCaseV0[] getCases() { + return this.cases; + } + + public void setCases(SCSpecUDTEnumCaseV0[] value) { + this.cases = value; + } + + public static void encode(XdrDataOutputStream stream, SCSpecUDTEnumV0 encodedSCSpecUDTEnumV0) + throws IOException { + encodedSCSpecUDTEnumV0.doc.encode(stream); + encodedSCSpecUDTEnumV0.lib.encode(stream); + encodedSCSpecUDTEnumV0.name.encode(stream); + int casessize = encodedSCSpecUDTEnumV0.getCases().length; + stream.writeInt(casessize); + for (int i = 0; i < casessize; i++) { + SCSpecUDTEnumCaseV0.encode(stream, encodedSCSpecUDTEnumV0.cases[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecUDTEnumV0 decode(XdrDataInputStream stream) throws IOException { + SCSpecUDTEnumV0 decodedSCSpecUDTEnumV0 = new SCSpecUDTEnumV0(); + decodedSCSpecUDTEnumV0.doc = XdrString.decode(stream, SC_SPEC_DOC_LIMIT); + decodedSCSpecUDTEnumV0.lib = XdrString.decode(stream, 80); + decodedSCSpecUDTEnumV0.name = XdrString.decode(stream, 60); + int casessize = stream.readInt(); + decodedSCSpecUDTEnumV0.cases = new SCSpecUDTEnumCaseV0[casessize]; + for (int i = 0; i < casessize; i++) { + decodedSCSpecUDTEnumV0.cases[i] = SCSpecUDTEnumCaseV0.decode(stream); + } + return decodedSCSpecUDTEnumV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.doc, this.lib, this.name, Arrays.hashCode(this.cases)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecUDTEnumV0)) { + return false; + } + + SCSpecUDTEnumV0 other = (SCSpecUDTEnumV0) object; + return Objects.equal(this.doc, other.doc) + && Objects.equal(this.lib, other.lib) + && Objects.equal(this.name, other.name) + && Arrays.equals(this.cases, other.cases); + } + + public static final class Builder { + private XdrString doc; + private XdrString lib; + private XdrString name; + private SCSpecUDTEnumCaseV0[] cases; + + public Builder doc(XdrString doc) { + this.doc = doc; + return this; + } + + public Builder lib(XdrString lib) { + this.lib = lib; + return this; + } + + public Builder name(XdrString name) { + this.name = name; + return this; + } + + public Builder cases(SCSpecUDTEnumCaseV0[] cases) { + this.cases = cases; + return this; + } + + public SCSpecUDTEnumV0 build() { + SCSpecUDTEnumV0 val = new SCSpecUDTEnumV0(); + val.setDoc(this.doc); + val.setLib(this.lib); + val.setName(this.name); + val.setCases(this.cases); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumCaseV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumCaseV0.java new file mode 100644 index 000000000..7488ff854 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumCaseV0.java @@ -0,0 +1,119 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCSpecUDTErrorEnumCaseV0 +// { +// string doc; +// string name<60>; +// uint32 value; +// }; + +// =========================================================================== +public class SCSpecUDTErrorEnumCaseV0 implements XdrElement { + public SCSpecUDTErrorEnumCaseV0() {} + + private XdrString doc; + + public XdrString getDoc() { + return this.doc; + } + + public void setDoc(XdrString value) { + this.doc = value; + } + + private XdrString name; + + public XdrString getName() { + return this.name; + } + + public void setName(XdrString value) { + this.name = value; + } + + private Uint32 value; + + public Uint32 getValue() { + return this.value; + } + + public void setValue(Uint32 value) { + this.value = value; + } + + public static void encode( + XdrDataOutputStream stream, SCSpecUDTErrorEnumCaseV0 encodedSCSpecUDTErrorEnumCaseV0) + throws IOException { + encodedSCSpecUDTErrorEnumCaseV0.doc.encode(stream); + encodedSCSpecUDTErrorEnumCaseV0.name.encode(stream); + Uint32.encode(stream, encodedSCSpecUDTErrorEnumCaseV0.value); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecUDTErrorEnumCaseV0 decode(XdrDataInputStream stream) throws IOException { + SCSpecUDTErrorEnumCaseV0 decodedSCSpecUDTErrorEnumCaseV0 = new SCSpecUDTErrorEnumCaseV0(); + decodedSCSpecUDTErrorEnumCaseV0.doc = XdrString.decode(stream, SC_SPEC_DOC_LIMIT); + decodedSCSpecUDTErrorEnumCaseV0.name = XdrString.decode(stream, 60); + decodedSCSpecUDTErrorEnumCaseV0.value = Uint32.decode(stream); + return decodedSCSpecUDTErrorEnumCaseV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.doc, this.name, this.value); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecUDTErrorEnumCaseV0)) { + return false; + } + + SCSpecUDTErrorEnumCaseV0 other = (SCSpecUDTErrorEnumCaseV0) object; + return Objects.equal(this.doc, other.doc) + && Objects.equal(this.name, other.name) + && Objects.equal(this.value, other.value); + } + + public static final class Builder { + private XdrString doc; + private XdrString name; + private Uint32 value; + + public Builder doc(XdrString doc) { + this.doc = doc; + return this; + } + + public Builder name(XdrString name) { + this.name = name; + return this; + } + + public Builder value(Uint32 value) { + this.value = value; + return this; + } + + public SCSpecUDTErrorEnumCaseV0 build() { + SCSpecUDTErrorEnumCaseV0 val = new SCSpecUDTErrorEnumCaseV0(); + val.setDoc(this.doc); + val.setName(this.name); + val.setValue(this.value); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumV0.java new file mode 100644 index 000000000..887768faa --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumV0.java @@ -0,0 +1,149 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct SCSpecUDTErrorEnumV0 +// { +// string doc; +// string lib<80>; +// string name<60>; +// SCSpecUDTErrorEnumCaseV0 cases<50>; +// }; + +// =========================================================================== +public class SCSpecUDTErrorEnumV0 implements XdrElement { + public SCSpecUDTErrorEnumV0() {} + + private XdrString doc; + + public XdrString getDoc() { + return this.doc; + } + + public void setDoc(XdrString value) { + this.doc = value; + } + + private XdrString lib; + + public XdrString getLib() { + return this.lib; + } + + public void setLib(XdrString value) { + this.lib = value; + } + + private XdrString name; + + public XdrString getName() { + return this.name; + } + + public void setName(XdrString value) { + this.name = value; + } + + private SCSpecUDTErrorEnumCaseV0[] cases; + + public SCSpecUDTErrorEnumCaseV0[] getCases() { + return this.cases; + } + + public void setCases(SCSpecUDTErrorEnumCaseV0[] value) { + this.cases = value; + } + + public static void encode( + XdrDataOutputStream stream, SCSpecUDTErrorEnumV0 encodedSCSpecUDTErrorEnumV0) + throws IOException { + encodedSCSpecUDTErrorEnumV0.doc.encode(stream); + encodedSCSpecUDTErrorEnumV0.lib.encode(stream); + encodedSCSpecUDTErrorEnumV0.name.encode(stream); + int casessize = encodedSCSpecUDTErrorEnumV0.getCases().length; + stream.writeInt(casessize); + for (int i = 0; i < casessize; i++) { + SCSpecUDTErrorEnumCaseV0.encode(stream, encodedSCSpecUDTErrorEnumV0.cases[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecUDTErrorEnumV0 decode(XdrDataInputStream stream) throws IOException { + SCSpecUDTErrorEnumV0 decodedSCSpecUDTErrorEnumV0 = new SCSpecUDTErrorEnumV0(); + decodedSCSpecUDTErrorEnumV0.doc = XdrString.decode(stream, SC_SPEC_DOC_LIMIT); + decodedSCSpecUDTErrorEnumV0.lib = XdrString.decode(stream, 80); + decodedSCSpecUDTErrorEnumV0.name = XdrString.decode(stream, 60); + int casessize = stream.readInt(); + decodedSCSpecUDTErrorEnumV0.cases = new SCSpecUDTErrorEnumCaseV0[casessize]; + for (int i = 0; i < casessize; i++) { + decodedSCSpecUDTErrorEnumV0.cases[i] = SCSpecUDTErrorEnumCaseV0.decode(stream); + } + return decodedSCSpecUDTErrorEnumV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.doc, this.lib, this.name, Arrays.hashCode(this.cases)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecUDTErrorEnumV0)) { + return false; + } + + SCSpecUDTErrorEnumV0 other = (SCSpecUDTErrorEnumV0) object; + return Objects.equal(this.doc, other.doc) + && Objects.equal(this.lib, other.lib) + && Objects.equal(this.name, other.name) + && Arrays.equals(this.cases, other.cases); + } + + public static final class Builder { + private XdrString doc; + private XdrString lib; + private XdrString name; + private SCSpecUDTErrorEnumCaseV0[] cases; + + public Builder doc(XdrString doc) { + this.doc = doc; + return this; + } + + public Builder lib(XdrString lib) { + this.lib = lib; + return this; + } + + public Builder name(XdrString name) { + this.name = name; + return this; + } + + public Builder cases(SCSpecUDTErrorEnumCaseV0[] cases) { + this.cases = cases; + return this; + } + + public SCSpecUDTErrorEnumV0 build() { + SCSpecUDTErrorEnumV0 val = new SCSpecUDTErrorEnumV0(); + val.setDoc(this.doc); + val.setLib(this.lib); + val.setName(this.name); + val.setCases(this.cases); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructFieldV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructFieldV0.java new file mode 100644 index 000000000..4aacf1a40 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructFieldV0.java @@ -0,0 +1,119 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCSpecUDTStructFieldV0 +// { +// string doc; +// string name<30>; +// SCSpecTypeDef type; +// }; + +// =========================================================================== +public class SCSpecUDTStructFieldV0 implements XdrElement { + public SCSpecUDTStructFieldV0() {} + + private XdrString doc; + + public XdrString getDoc() { + return this.doc; + } + + public void setDoc(XdrString value) { + this.doc = value; + } + + private XdrString name; + + public XdrString getName() { + return this.name; + } + + public void setName(XdrString value) { + this.name = value; + } + + private SCSpecTypeDef type; + + public SCSpecTypeDef getType() { + return this.type; + } + + public void setType(SCSpecTypeDef value) { + this.type = value; + } + + public static void encode( + XdrDataOutputStream stream, SCSpecUDTStructFieldV0 encodedSCSpecUDTStructFieldV0) + throws IOException { + encodedSCSpecUDTStructFieldV0.doc.encode(stream); + encodedSCSpecUDTStructFieldV0.name.encode(stream); + SCSpecTypeDef.encode(stream, encodedSCSpecUDTStructFieldV0.type); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecUDTStructFieldV0 decode(XdrDataInputStream stream) throws IOException { + SCSpecUDTStructFieldV0 decodedSCSpecUDTStructFieldV0 = new SCSpecUDTStructFieldV0(); + decodedSCSpecUDTStructFieldV0.doc = XdrString.decode(stream, SC_SPEC_DOC_LIMIT); + decodedSCSpecUDTStructFieldV0.name = XdrString.decode(stream, 30); + decodedSCSpecUDTStructFieldV0.type = SCSpecTypeDef.decode(stream); + return decodedSCSpecUDTStructFieldV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.doc, this.name, this.type); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecUDTStructFieldV0)) { + return false; + } + + SCSpecUDTStructFieldV0 other = (SCSpecUDTStructFieldV0) object; + return Objects.equal(this.doc, other.doc) + && Objects.equal(this.name, other.name) + && Objects.equal(this.type, other.type); + } + + public static final class Builder { + private XdrString doc; + private XdrString name; + private SCSpecTypeDef type; + + public Builder doc(XdrString doc) { + this.doc = doc; + return this; + } + + public Builder name(XdrString name) { + this.name = name; + return this; + } + + public Builder type(SCSpecTypeDef type) { + this.type = type; + return this; + } + + public SCSpecUDTStructFieldV0 build() { + SCSpecUDTStructFieldV0 val = new SCSpecUDTStructFieldV0(); + val.setDoc(this.doc); + val.setName(this.name); + val.setType(this.type); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructV0.java new file mode 100644 index 000000000..26be1f931 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructV0.java @@ -0,0 +1,148 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct SCSpecUDTStructV0 +// { +// string doc; +// string lib<80>; +// string name<60>; +// SCSpecUDTStructFieldV0 fields<40>; +// }; + +// =========================================================================== +public class SCSpecUDTStructV0 implements XdrElement { + public SCSpecUDTStructV0() {} + + private XdrString doc; + + public XdrString getDoc() { + return this.doc; + } + + public void setDoc(XdrString value) { + this.doc = value; + } + + private XdrString lib; + + public XdrString getLib() { + return this.lib; + } + + public void setLib(XdrString value) { + this.lib = value; + } + + private XdrString name; + + public XdrString getName() { + return this.name; + } + + public void setName(XdrString value) { + this.name = value; + } + + private SCSpecUDTStructFieldV0[] fields; + + public SCSpecUDTStructFieldV0[] getFields() { + return this.fields; + } + + public void setFields(SCSpecUDTStructFieldV0[] value) { + this.fields = value; + } + + public static void encode(XdrDataOutputStream stream, SCSpecUDTStructV0 encodedSCSpecUDTStructV0) + throws IOException { + encodedSCSpecUDTStructV0.doc.encode(stream); + encodedSCSpecUDTStructV0.lib.encode(stream); + encodedSCSpecUDTStructV0.name.encode(stream); + int fieldssize = encodedSCSpecUDTStructV0.getFields().length; + stream.writeInt(fieldssize); + for (int i = 0; i < fieldssize; i++) { + SCSpecUDTStructFieldV0.encode(stream, encodedSCSpecUDTStructV0.fields[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecUDTStructV0 decode(XdrDataInputStream stream) throws IOException { + SCSpecUDTStructV0 decodedSCSpecUDTStructV0 = new SCSpecUDTStructV0(); + decodedSCSpecUDTStructV0.doc = XdrString.decode(stream, SC_SPEC_DOC_LIMIT); + decodedSCSpecUDTStructV0.lib = XdrString.decode(stream, 80); + decodedSCSpecUDTStructV0.name = XdrString.decode(stream, 60); + int fieldssize = stream.readInt(); + decodedSCSpecUDTStructV0.fields = new SCSpecUDTStructFieldV0[fieldssize]; + for (int i = 0; i < fieldssize; i++) { + decodedSCSpecUDTStructV0.fields[i] = SCSpecUDTStructFieldV0.decode(stream); + } + return decodedSCSpecUDTStructV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.doc, this.lib, this.name, Arrays.hashCode(this.fields)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecUDTStructV0)) { + return false; + } + + SCSpecUDTStructV0 other = (SCSpecUDTStructV0) object; + return Objects.equal(this.doc, other.doc) + && Objects.equal(this.lib, other.lib) + && Objects.equal(this.name, other.name) + && Arrays.equals(this.fields, other.fields); + } + + public static final class Builder { + private XdrString doc; + private XdrString lib; + private XdrString name; + private SCSpecUDTStructFieldV0[] fields; + + public Builder doc(XdrString doc) { + this.doc = doc; + return this; + } + + public Builder lib(XdrString lib) { + this.lib = lib; + return this; + } + + public Builder name(XdrString name) { + this.name = name; + return this; + } + + public Builder fields(SCSpecUDTStructFieldV0[] fields) { + this.fields = fields; + return this; + } + + public SCSpecUDTStructV0 build() { + SCSpecUDTStructV0 val = new SCSpecUDTStructV0(); + val.setDoc(this.doc); + val.setLib(this.lib); + val.setName(this.name); + val.setFields(this.fields); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseTupleV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseTupleV0.java new file mode 100644 index 000000000..b678f4c1a --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseTupleV0.java @@ -0,0 +1,128 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct SCSpecUDTUnionCaseTupleV0 +// { +// string doc; +// string name<60>; +// SCSpecTypeDef type<12>; +// }; + +// =========================================================================== +public class SCSpecUDTUnionCaseTupleV0 implements XdrElement { + public SCSpecUDTUnionCaseTupleV0() {} + + private XdrString doc; + + public XdrString getDoc() { + return this.doc; + } + + public void setDoc(XdrString value) { + this.doc = value; + } + + private XdrString name; + + public XdrString getName() { + return this.name; + } + + public void setName(XdrString value) { + this.name = value; + } + + private SCSpecTypeDef[] type; + + public SCSpecTypeDef[] getType() { + return this.type; + } + + public void setType(SCSpecTypeDef[] value) { + this.type = value; + } + + public static void encode( + XdrDataOutputStream stream, SCSpecUDTUnionCaseTupleV0 encodedSCSpecUDTUnionCaseTupleV0) + throws IOException { + encodedSCSpecUDTUnionCaseTupleV0.doc.encode(stream); + encodedSCSpecUDTUnionCaseTupleV0.name.encode(stream); + int typesize = encodedSCSpecUDTUnionCaseTupleV0.getType().length; + stream.writeInt(typesize); + for (int i = 0; i < typesize; i++) { + SCSpecTypeDef.encode(stream, encodedSCSpecUDTUnionCaseTupleV0.type[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecUDTUnionCaseTupleV0 decode(XdrDataInputStream stream) throws IOException { + SCSpecUDTUnionCaseTupleV0 decodedSCSpecUDTUnionCaseTupleV0 = new SCSpecUDTUnionCaseTupleV0(); + decodedSCSpecUDTUnionCaseTupleV0.doc = XdrString.decode(stream, SC_SPEC_DOC_LIMIT); + decodedSCSpecUDTUnionCaseTupleV0.name = XdrString.decode(stream, 60); + int typesize = stream.readInt(); + decodedSCSpecUDTUnionCaseTupleV0.type = new SCSpecTypeDef[typesize]; + for (int i = 0; i < typesize; i++) { + decodedSCSpecUDTUnionCaseTupleV0.type[i] = SCSpecTypeDef.decode(stream); + } + return decodedSCSpecUDTUnionCaseTupleV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.doc, this.name, Arrays.hashCode(this.type)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecUDTUnionCaseTupleV0)) { + return false; + } + + SCSpecUDTUnionCaseTupleV0 other = (SCSpecUDTUnionCaseTupleV0) object; + return Objects.equal(this.doc, other.doc) + && Objects.equal(this.name, other.name) + && Arrays.equals(this.type, other.type); + } + + public static final class Builder { + private XdrString doc; + private XdrString name; + private SCSpecTypeDef[] type; + + public Builder doc(XdrString doc) { + this.doc = doc; + return this; + } + + public Builder name(XdrString name) { + this.name = name; + return this; + } + + public Builder type(SCSpecTypeDef[] type) { + this.type = type; + return this; + } + + public SCSpecUDTUnionCaseTupleV0 build() { + SCSpecUDTUnionCaseTupleV0 val = new SCSpecUDTUnionCaseTupleV0(); + val.setDoc(this.doc); + val.setName(this.name); + val.setType(this.type); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0.java new file mode 100644 index 000000000..301c06c93 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0.java @@ -0,0 +1,135 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union SCSpecUDTUnionCaseV0 switch (SCSpecUDTUnionCaseV0Kind kind) +// { +// case SC_SPEC_UDT_UNION_CASE_VOID_V0: +// SCSpecUDTUnionCaseVoidV0 voidCase; +// case SC_SPEC_UDT_UNION_CASE_TUPLE_V0: +// SCSpecUDTUnionCaseTupleV0 tupleCase; +// }; + +// =========================================================================== +public class SCSpecUDTUnionCaseV0 implements XdrElement { + public SCSpecUDTUnionCaseV0() {} + + SCSpecUDTUnionCaseV0Kind kind; + + public SCSpecUDTUnionCaseV0Kind getDiscriminant() { + return this.kind; + } + + public void setDiscriminant(SCSpecUDTUnionCaseV0Kind value) { + this.kind = value; + } + + private SCSpecUDTUnionCaseVoidV0 voidCase; + + public SCSpecUDTUnionCaseVoidV0 getVoidCase() { + return this.voidCase; + } + + public void setVoidCase(SCSpecUDTUnionCaseVoidV0 value) { + this.voidCase = value; + } + + private SCSpecUDTUnionCaseTupleV0 tupleCase; + + public SCSpecUDTUnionCaseTupleV0 getTupleCase() { + return this.tupleCase; + } + + public void setTupleCase(SCSpecUDTUnionCaseTupleV0 value) { + this.tupleCase = value; + } + + public static final class Builder { + private SCSpecUDTUnionCaseV0Kind discriminant; + private SCSpecUDTUnionCaseVoidV0 voidCase; + private SCSpecUDTUnionCaseTupleV0 tupleCase; + + public Builder discriminant(SCSpecUDTUnionCaseV0Kind discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder voidCase(SCSpecUDTUnionCaseVoidV0 voidCase) { + this.voidCase = voidCase; + return this; + } + + public Builder tupleCase(SCSpecUDTUnionCaseTupleV0 tupleCase) { + this.tupleCase = tupleCase; + return this; + } + + public SCSpecUDTUnionCaseV0 build() { + SCSpecUDTUnionCaseV0 val = new SCSpecUDTUnionCaseV0(); + val.setDiscriminant(discriminant); + val.setVoidCase(this.voidCase); + val.setTupleCase(this.tupleCase); + return val; + } + } + + public static void encode( + XdrDataOutputStream stream, SCSpecUDTUnionCaseV0 encodedSCSpecUDTUnionCaseV0) + throws IOException { + // Xdrgen::AST::Identifier + // SCSpecUDTUnionCaseV0Kind + stream.writeInt(encodedSCSpecUDTUnionCaseV0.getDiscriminant().getValue()); + switch (encodedSCSpecUDTUnionCaseV0.getDiscriminant()) { + case SC_SPEC_UDT_UNION_CASE_VOID_V0: + SCSpecUDTUnionCaseVoidV0.encode(stream, encodedSCSpecUDTUnionCaseV0.voidCase); + break; + case SC_SPEC_UDT_UNION_CASE_TUPLE_V0: + SCSpecUDTUnionCaseTupleV0.encode(stream, encodedSCSpecUDTUnionCaseV0.tupleCase); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecUDTUnionCaseV0 decode(XdrDataInputStream stream) throws IOException { + SCSpecUDTUnionCaseV0 decodedSCSpecUDTUnionCaseV0 = new SCSpecUDTUnionCaseV0(); + SCSpecUDTUnionCaseV0Kind discriminant = SCSpecUDTUnionCaseV0Kind.decode(stream); + decodedSCSpecUDTUnionCaseV0.setDiscriminant(discriminant); + switch (decodedSCSpecUDTUnionCaseV0.getDiscriminant()) { + case SC_SPEC_UDT_UNION_CASE_VOID_V0: + decodedSCSpecUDTUnionCaseV0.voidCase = SCSpecUDTUnionCaseVoidV0.decode(stream); + break; + case SC_SPEC_UDT_UNION_CASE_TUPLE_V0: + decodedSCSpecUDTUnionCaseV0.tupleCase = SCSpecUDTUnionCaseTupleV0.decode(stream); + break; + } + return decodedSCSpecUDTUnionCaseV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.voidCase, this.tupleCase, this.kind); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecUDTUnionCaseV0)) { + return false; + } + + SCSpecUDTUnionCaseV0 other = (SCSpecUDTUnionCaseV0) object; + return Objects.equal(this.voidCase, other.voidCase) + && Objects.equal(this.tupleCase, other.tupleCase) + && Objects.equal(this.kind, other.kind); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0Kind.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0Kind.java new file mode 100644 index 000000000..f47dd3ee3 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0Kind.java @@ -0,0 +1,53 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum SCSpecUDTUnionCaseV0Kind +// { +// SC_SPEC_UDT_UNION_CASE_VOID_V0 = 0, +// SC_SPEC_UDT_UNION_CASE_TUPLE_V0 = 1 +// }; + +// =========================================================================== +public enum SCSpecUDTUnionCaseV0Kind implements XdrElement { + SC_SPEC_UDT_UNION_CASE_VOID_V0(0), + SC_SPEC_UDT_UNION_CASE_TUPLE_V0(1), + ; + private int mValue; + + SCSpecUDTUnionCaseV0Kind(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static SCSpecUDTUnionCaseV0Kind decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return SC_SPEC_UDT_UNION_CASE_VOID_V0; + case 1: + return SC_SPEC_UDT_UNION_CASE_TUPLE_V0; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, SCSpecUDTUnionCaseV0Kind value) + throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseVoidV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseVoidV0.java new file mode 100644 index 000000000..25f9db25f --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseVoidV0.java @@ -0,0 +1,97 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SCSpecUDTUnionCaseVoidV0 +// { +// string doc; +// string name<60>; +// }; + +// =========================================================================== +public class SCSpecUDTUnionCaseVoidV0 implements XdrElement { + public SCSpecUDTUnionCaseVoidV0() {} + + private XdrString doc; + + public XdrString getDoc() { + return this.doc; + } + + public void setDoc(XdrString value) { + this.doc = value; + } + + private XdrString name; + + public XdrString getName() { + return this.name; + } + + public void setName(XdrString value) { + this.name = value; + } + + public static void encode( + XdrDataOutputStream stream, SCSpecUDTUnionCaseVoidV0 encodedSCSpecUDTUnionCaseVoidV0) + throws IOException { + encodedSCSpecUDTUnionCaseVoidV0.doc.encode(stream); + encodedSCSpecUDTUnionCaseVoidV0.name.encode(stream); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecUDTUnionCaseVoidV0 decode(XdrDataInputStream stream) throws IOException { + SCSpecUDTUnionCaseVoidV0 decodedSCSpecUDTUnionCaseVoidV0 = new SCSpecUDTUnionCaseVoidV0(); + decodedSCSpecUDTUnionCaseVoidV0.doc = XdrString.decode(stream, SC_SPEC_DOC_LIMIT); + decodedSCSpecUDTUnionCaseVoidV0.name = XdrString.decode(stream, 60); + return decodedSCSpecUDTUnionCaseVoidV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.doc, this.name); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecUDTUnionCaseVoidV0)) { + return false; + } + + SCSpecUDTUnionCaseVoidV0 other = (SCSpecUDTUnionCaseVoidV0) object; + return Objects.equal(this.doc, other.doc) && Objects.equal(this.name, other.name); + } + + public static final class Builder { + private XdrString doc; + private XdrString name; + + public Builder doc(XdrString doc) { + this.doc = doc; + return this; + } + + public Builder name(XdrString name) { + this.name = name; + return this; + } + + public SCSpecUDTUnionCaseVoidV0 build() { + SCSpecUDTUnionCaseVoidV0 val = new SCSpecUDTUnionCaseVoidV0(); + val.setDoc(this.doc); + val.setName(this.name); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionV0.java new file mode 100644 index 000000000..7a8be142f --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionV0.java @@ -0,0 +1,148 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct SCSpecUDTUnionV0 +// { +// string doc; +// string lib<80>; +// string name<60>; +// SCSpecUDTUnionCaseV0 cases<50>; +// }; + +// =========================================================================== +public class SCSpecUDTUnionV0 implements XdrElement { + public SCSpecUDTUnionV0() {} + + private XdrString doc; + + public XdrString getDoc() { + return this.doc; + } + + public void setDoc(XdrString value) { + this.doc = value; + } + + private XdrString lib; + + public XdrString getLib() { + return this.lib; + } + + public void setLib(XdrString value) { + this.lib = value; + } + + private XdrString name; + + public XdrString getName() { + return this.name; + } + + public void setName(XdrString value) { + this.name = value; + } + + private SCSpecUDTUnionCaseV0[] cases; + + public SCSpecUDTUnionCaseV0[] getCases() { + return this.cases; + } + + public void setCases(SCSpecUDTUnionCaseV0[] value) { + this.cases = value; + } + + public static void encode(XdrDataOutputStream stream, SCSpecUDTUnionV0 encodedSCSpecUDTUnionV0) + throws IOException { + encodedSCSpecUDTUnionV0.doc.encode(stream); + encodedSCSpecUDTUnionV0.lib.encode(stream); + encodedSCSpecUDTUnionV0.name.encode(stream); + int casessize = encodedSCSpecUDTUnionV0.getCases().length; + stream.writeInt(casessize); + for (int i = 0; i < casessize; i++) { + SCSpecUDTUnionCaseV0.encode(stream, encodedSCSpecUDTUnionV0.cases[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSpecUDTUnionV0 decode(XdrDataInputStream stream) throws IOException { + SCSpecUDTUnionV0 decodedSCSpecUDTUnionV0 = new SCSpecUDTUnionV0(); + decodedSCSpecUDTUnionV0.doc = XdrString.decode(stream, SC_SPEC_DOC_LIMIT); + decodedSCSpecUDTUnionV0.lib = XdrString.decode(stream, 80); + decodedSCSpecUDTUnionV0.name = XdrString.decode(stream, 60); + int casessize = stream.readInt(); + decodedSCSpecUDTUnionV0.cases = new SCSpecUDTUnionCaseV0[casessize]; + for (int i = 0; i < casessize; i++) { + decodedSCSpecUDTUnionV0.cases[i] = SCSpecUDTUnionCaseV0.decode(stream); + } + return decodedSCSpecUDTUnionV0; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.doc, this.lib, this.name, Arrays.hashCode(this.cases)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSpecUDTUnionV0)) { + return false; + } + + SCSpecUDTUnionV0 other = (SCSpecUDTUnionV0) object; + return Objects.equal(this.doc, other.doc) + && Objects.equal(this.lib, other.lib) + && Objects.equal(this.name, other.name) + && Arrays.equals(this.cases, other.cases); + } + + public static final class Builder { + private XdrString doc; + private XdrString lib; + private XdrString name; + private SCSpecUDTUnionCaseV0[] cases; + + public Builder doc(XdrString doc) { + this.doc = doc; + return this; + } + + public Builder lib(XdrString lib) { + this.lib = lib; + return this; + } + + public Builder name(XdrString name) { + this.name = name; + return this; + } + + public Builder cases(SCSpecUDTUnionCaseV0[] cases) { + this.cases = cases; + return this; + } + + public SCSpecUDTUnionV0 build() { + SCSpecUDTUnionV0 val = new SCSpecUDTUnionV0(); + val.setDoc(this.doc); + val.setLib(this.lib); + val.setName(this.name); + val.setCases(this.cases); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCString.java b/src/main/java/org/stellar/sdk/xdr/SCString.java new file mode 100644 index 000000000..916a608ce --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCString.java @@ -0,0 +1,62 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// typedef string SCString<>; + +// =========================================================================== +public class SCString implements XdrElement { + private XdrString SCString; + + public SCString() {} + + public SCString(XdrString SCString) { + this.SCString = SCString; + } + + public XdrString getSCString() { + return this.SCString; + } + + public void setSCString(XdrString value) { + this.SCString = value; + } + + public static void encode(XdrDataOutputStream stream, SCString encodedSCString) + throws IOException { + encodedSCString.SCString.encode(stream); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCString decode(XdrDataInputStream stream) throws IOException { + SCString decodedSCString = new SCString(); + decodedSCString.SCString = XdrString.decode(stream, 2147483647); + return decodedSCString; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.SCString); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCString)) { + return false; + } + + SCString other = (SCString) object; + return Objects.equal(this.SCString, other.SCString); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCSymbol.java b/src/main/java/org/stellar/sdk/xdr/SCSymbol.java new file mode 100644 index 000000000..ce7f02918 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCSymbol.java @@ -0,0 +1,62 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// typedef string SCSymbol; + +// =========================================================================== +public class SCSymbol implements XdrElement { + private XdrString SCSymbol; + + public SCSymbol() {} + + public SCSymbol(XdrString SCSymbol) { + this.SCSymbol = SCSymbol; + } + + public XdrString getSCSymbol() { + return this.SCSymbol; + } + + public void setSCSymbol(XdrString value) { + this.SCSymbol = value; + } + + public static void encode(XdrDataOutputStream stream, SCSymbol encodedSCSymbol) + throws IOException { + encodedSCSymbol.SCSymbol.encode(stream); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCSymbol decode(XdrDataInputStream stream) throws IOException { + SCSymbol decodedSCSymbol = new SCSymbol(); + decodedSCSymbol.SCSymbol = XdrString.decode(stream, SCSYMBOL_LIMIT); + return decodedSCSymbol; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.SCSymbol); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCSymbol)) { + return false; + } + + SCSymbol other = (SCSymbol) object; + return Objects.equal(this.SCSymbol, other.SCSymbol); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCVal.java b/src/main/java/org/stellar/sdk/xdr/SCVal.java new file mode 100644 index 000000000..6c29d68c6 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCVal.java @@ -0,0 +1,664 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union SCVal switch (SCValType type) +// { +// +// case SCV_BOOL: +// bool b; +// case SCV_VOID: +// void; +// case SCV_ERROR: +// SCError error; +// +// case SCV_U32: +// uint32 u32; +// case SCV_I32: +// int32 i32; +// +// case SCV_U64: +// uint64 u64; +// case SCV_I64: +// int64 i64; +// case SCV_TIMEPOINT: +// TimePoint timepoint; +// case SCV_DURATION: +// Duration duration; +// +// case SCV_U128: +// UInt128Parts u128; +// case SCV_I128: +// Int128Parts i128; +// +// case SCV_U256: +// UInt256Parts u256; +// case SCV_I256: +// Int256Parts i256; +// +// case SCV_BYTES: +// SCBytes bytes; +// case SCV_STRING: +// SCString str; +// case SCV_SYMBOL: +// SCSymbol sym; +// +// // Vec and Map are recursive so need to live +// // behind an option, due to xdrpp limitations. +// case SCV_VEC: +// SCVec *vec; +// case SCV_MAP: +// SCMap *map; +// +// case SCV_ADDRESS: +// SCAddress address; +// +// // Special SCVals reserved for system-constructed contract-data +// // ledger keys, not generally usable elsewhere. +// case SCV_LEDGER_KEY_CONTRACT_INSTANCE: +// void; +// case SCV_LEDGER_KEY_NONCE: +// SCNonceKey nonce_key; +// +// case SCV_CONTRACT_INSTANCE: +// SCContractInstance instance; +// }; + +// =========================================================================== +public class SCVal implements XdrElement { + public SCVal() {} + + SCValType type; + + public SCValType getDiscriminant() { + return this.type; + } + + public void setDiscriminant(SCValType value) { + this.type = value; + } + + private Boolean b; + + public Boolean getB() { + return this.b; + } + + public void setB(Boolean value) { + this.b = value; + } + + private SCError error; + + public SCError getError() { + return this.error; + } + + public void setError(SCError value) { + this.error = value; + } + + private Uint32 u32; + + public Uint32 getU32() { + return this.u32; + } + + public void setU32(Uint32 value) { + this.u32 = value; + } + + private Int32 i32; + + public Int32 getI32() { + return this.i32; + } + + public void setI32(Int32 value) { + this.i32 = value; + } + + private Uint64 u64; + + public Uint64 getU64() { + return this.u64; + } + + public void setU64(Uint64 value) { + this.u64 = value; + } + + private Int64 i64; + + public Int64 getI64() { + return this.i64; + } + + public void setI64(Int64 value) { + this.i64 = value; + } + + private TimePoint timepoint; + + public TimePoint getTimepoint() { + return this.timepoint; + } + + public void setTimepoint(TimePoint value) { + this.timepoint = value; + } + + private Duration duration; + + public Duration getDuration() { + return this.duration; + } + + public void setDuration(Duration value) { + this.duration = value; + } + + private UInt128Parts u128; + + public UInt128Parts getU128() { + return this.u128; + } + + public void setU128(UInt128Parts value) { + this.u128 = value; + } + + private Int128Parts i128; + + public Int128Parts getI128() { + return this.i128; + } + + public void setI128(Int128Parts value) { + this.i128 = value; + } + + private UInt256Parts u256; + + public UInt256Parts getU256() { + return this.u256; + } + + public void setU256(UInt256Parts value) { + this.u256 = value; + } + + private Int256Parts i256; + + public Int256Parts getI256() { + return this.i256; + } + + public void setI256(Int256Parts value) { + this.i256 = value; + } + + private SCBytes bytes; + + public SCBytes getBytes() { + return this.bytes; + } + + public void setBytes(SCBytes value) { + this.bytes = value; + } + + private SCString str; + + public SCString getStr() { + return this.str; + } + + public void setStr(SCString value) { + this.str = value; + } + + private SCSymbol sym; + + public SCSymbol getSym() { + return this.sym; + } + + public void setSym(SCSymbol value) { + this.sym = value; + } + + private SCVec vec; + + public SCVec getVec() { + return this.vec; + } + + public void setVec(SCVec value) { + this.vec = value; + } + + private SCMap map; + + public SCMap getMap() { + return this.map; + } + + public void setMap(SCMap value) { + this.map = value; + } + + private SCAddress address; + + public SCAddress getAddress() { + return this.address; + } + + public void setAddress(SCAddress value) { + this.address = value; + } + + private SCNonceKey nonce_key; + + public SCNonceKey getNonce_key() { + return this.nonce_key; + } + + public void setNonce_key(SCNonceKey value) { + this.nonce_key = value; + } + + private SCContractInstance instance; + + public SCContractInstance getInstance() { + return this.instance; + } + + public void setInstance(SCContractInstance value) { + this.instance = value; + } + + public static final class Builder { + private SCValType discriminant; + private Boolean b; + private SCError error; + private Uint32 u32; + private Int32 i32; + private Uint64 u64; + private Int64 i64; + private TimePoint timepoint; + private Duration duration; + private UInt128Parts u128; + private Int128Parts i128; + private UInt256Parts u256; + private Int256Parts i256; + private SCBytes bytes; + private SCString str; + private SCSymbol sym; + private SCVec vec; + private SCMap map; + private SCAddress address; + private SCNonceKey nonce_key; + private SCContractInstance instance; + + public Builder discriminant(SCValType discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder b(Boolean b) { + this.b = b; + return this; + } + + public Builder error(SCError error) { + this.error = error; + return this; + } + + public Builder u32(Uint32 u32) { + this.u32 = u32; + return this; + } + + public Builder i32(Int32 i32) { + this.i32 = i32; + return this; + } + + public Builder u64(Uint64 u64) { + this.u64 = u64; + return this; + } + + public Builder i64(Int64 i64) { + this.i64 = i64; + return this; + } + + public Builder timepoint(TimePoint timepoint) { + this.timepoint = timepoint; + return this; + } + + public Builder duration(Duration duration) { + this.duration = duration; + return this; + } + + public Builder u128(UInt128Parts u128) { + this.u128 = u128; + return this; + } + + public Builder i128(Int128Parts i128) { + this.i128 = i128; + return this; + } + + public Builder u256(UInt256Parts u256) { + this.u256 = u256; + return this; + } + + public Builder i256(Int256Parts i256) { + this.i256 = i256; + return this; + } + + public Builder bytes(SCBytes bytes) { + this.bytes = bytes; + return this; + } + + public Builder str(SCString str) { + this.str = str; + return this; + } + + public Builder sym(SCSymbol sym) { + this.sym = sym; + return this; + } + + public Builder vec(SCVec vec) { + this.vec = vec; + return this; + } + + public Builder map(SCMap map) { + this.map = map; + return this; + } + + public Builder address(SCAddress address) { + this.address = address; + return this; + } + + public Builder nonce_key(SCNonceKey nonce_key) { + this.nonce_key = nonce_key; + return this; + } + + public Builder instance(SCContractInstance instance) { + this.instance = instance; + return this; + } + + public SCVal build() { + SCVal val = new SCVal(); + val.setDiscriminant(discriminant); + val.setB(this.b); + val.setError(this.error); + val.setU32(this.u32); + val.setI32(this.i32); + val.setU64(this.u64); + val.setI64(this.i64); + val.setTimepoint(this.timepoint); + val.setDuration(this.duration); + val.setU128(this.u128); + val.setI128(this.i128); + val.setU256(this.u256); + val.setI256(this.i256); + val.setBytes(this.bytes); + val.setStr(this.str); + val.setSym(this.sym); + val.setVec(this.vec); + val.setMap(this.map); + val.setAddress(this.address); + val.setNonce_key(this.nonce_key); + val.setInstance(this.instance); + return val; + } + } + + public static void encode(XdrDataOutputStream stream, SCVal encodedSCVal) throws IOException { + // Xdrgen::AST::Identifier + // SCValType + stream.writeInt(encodedSCVal.getDiscriminant().getValue()); + switch (encodedSCVal.getDiscriminant()) { + case SCV_BOOL: + stream.writeInt(encodedSCVal.b ? 1 : 0); + break; + case SCV_VOID: + break; + case SCV_ERROR: + SCError.encode(stream, encodedSCVal.error); + break; + case SCV_U32: + Uint32.encode(stream, encodedSCVal.u32); + break; + case SCV_I32: + Int32.encode(stream, encodedSCVal.i32); + break; + case SCV_U64: + Uint64.encode(stream, encodedSCVal.u64); + break; + case SCV_I64: + Int64.encode(stream, encodedSCVal.i64); + break; + case SCV_TIMEPOINT: + TimePoint.encode(stream, encodedSCVal.timepoint); + break; + case SCV_DURATION: + Duration.encode(stream, encodedSCVal.duration); + break; + case SCV_U128: + UInt128Parts.encode(stream, encodedSCVal.u128); + break; + case SCV_I128: + Int128Parts.encode(stream, encodedSCVal.i128); + break; + case SCV_U256: + UInt256Parts.encode(stream, encodedSCVal.u256); + break; + case SCV_I256: + Int256Parts.encode(stream, encodedSCVal.i256); + break; + case SCV_BYTES: + SCBytes.encode(stream, encodedSCVal.bytes); + break; + case SCV_STRING: + SCString.encode(stream, encodedSCVal.str); + break; + case SCV_SYMBOL: + SCSymbol.encode(stream, encodedSCVal.sym); + break; + case SCV_VEC: + if (encodedSCVal.vec != null) { + stream.writeInt(1); + SCVec.encode(stream, encodedSCVal.vec); + } else { + stream.writeInt(0); + } + break; + case SCV_MAP: + if (encodedSCVal.map != null) { + stream.writeInt(1); + SCMap.encode(stream, encodedSCVal.map); + } else { + stream.writeInt(0); + } + break; + case SCV_ADDRESS: + SCAddress.encode(stream, encodedSCVal.address); + break; + case SCV_LEDGER_KEY_CONTRACT_INSTANCE: + break; + case SCV_LEDGER_KEY_NONCE: + SCNonceKey.encode(stream, encodedSCVal.nonce_key); + break; + case SCV_CONTRACT_INSTANCE: + SCContractInstance.encode(stream, encodedSCVal.instance); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCVal decode(XdrDataInputStream stream) throws IOException { + SCVal decodedSCVal = new SCVal(); + SCValType discriminant = SCValType.decode(stream); + decodedSCVal.setDiscriminant(discriminant); + switch (decodedSCVal.getDiscriminant()) { + case SCV_BOOL: + decodedSCVal.b = stream.readInt() == 1 ? true : false; + break; + case SCV_VOID: + break; + case SCV_ERROR: + decodedSCVal.error = SCError.decode(stream); + break; + case SCV_U32: + decodedSCVal.u32 = Uint32.decode(stream); + break; + case SCV_I32: + decodedSCVal.i32 = Int32.decode(stream); + break; + case SCV_U64: + decodedSCVal.u64 = Uint64.decode(stream); + break; + case SCV_I64: + decodedSCVal.i64 = Int64.decode(stream); + break; + case SCV_TIMEPOINT: + decodedSCVal.timepoint = TimePoint.decode(stream); + break; + case SCV_DURATION: + decodedSCVal.duration = Duration.decode(stream); + break; + case SCV_U128: + decodedSCVal.u128 = UInt128Parts.decode(stream); + break; + case SCV_I128: + decodedSCVal.i128 = Int128Parts.decode(stream); + break; + case SCV_U256: + decodedSCVal.u256 = UInt256Parts.decode(stream); + break; + case SCV_I256: + decodedSCVal.i256 = Int256Parts.decode(stream); + break; + case SCV_BYTES: + decodedSCVal.bytes = SCBytes.decode(stream); + break; + case SCV_STRING: + decodedSCVal.str = SCString.decode(stream); + break; + case SCV_SYMBOL: + decodedSCVal.sym = SCSymbol.decode(stream); + break; + case SCV_VEC: + int vecPresent = stream.readInt(); + if (vecPresent != 0) { + decodedSCVal.vec = SCVec.decode(stream); + } + break; + case SCV_MAP: + int mapPresent = stream.readInt(); + if (mapPresent != 0) { + decodedSCVal.map = SCMap.decode(stream); + } + break; + case SCV_ADDRESS: + decodedSCVal.address = SCAddress.decode(stream); + break; + case SCV_LEDGER_KEY_CONTRACT_INSTANCE: + break; + case SCV_LEDGER_KEY_NONCE: + decodedSCVal.nonce_key = SCNonceKey.decode(stream); + break; + case SCV_CONTRACT_INSTANCE: + decodedSCVal.instance = SCContractInstance.decode(stream); + break; + } + return decodedSCVal; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.b, + this.error, + this.u32, + this.i32, + this.u64, + this.i64, + this.timepoint, + this.duration, + this.u128, + this.i128, + this.u256, + this.i256, + this.bytes, + this.str, + this.sym, + this.vec, + this.map, + this.address, + this.nonce_key, + this.instance, + this.type); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCVal)) { + return false; + } + + SCVal other = (SCVal) object; + return Objects.equal(this.b, other.b) + && Objects.equal(this.error, other.error) + && Objects.equal(this.u32, other.u32) + && Objects.equal(this.i32, other.i32) + && Objects.equal(this.u64, other.u64) + && Objects.equal(this.i64, other.i64) + && Objects.equal(this.timepoint, other.timepoint) + && Objects.equal(this.duration, other.duration) + && Objects.equal(this.u128, other.u128) + && Objects.equal(this.i128, other.i128) + && Objects.equal(this.u256, other.u256) + && Objects.equal(this.i256, other.i256) + && Objects.equal(this.bytes, other.bytes) + && Objects.equal(this.str, other.str) + && Objects.equal(this.sym, other.sym) + && Objects.equal(this.vec, other.vec) + && Objects.equal(this.map, other.map) + && Objects.equal(this.address, other.address) + && Objects.equal(this.nonce_key, other.nonce_key) + && Objects.equal(this.instance, other.instance) + && Objects.equal(this.type, other.type); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCValType.java b/src/main/java/org/stellar/sdk/xdr/SCValType.java new file mode 100644 index 000000000..e6ad5512b --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCValType.java @@ -0,0 +1,162 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum SCValType +// { +// SCV_BOOL = 0, +// SCV_VOID = 1, +// SCV_ERROR = 2, +// +// // 32 bits is the smallest type in WASM or XDR; no need for u8/u16. +// SCV_U32 = 3, +// SCV_I32 = 4, +// +// // 64 bits is naturally supported by both WASM and XDR also. +// SCV_U64 = 5, +// SCV_I64 = 6, +// +// // Time-related u64 subtypes with their own functions and formatting. +// SCV_TIMEPOINT = 7, +// SCV_DURATION = 8, +// +// // 128 bits is naturally supported by Rust and we use it for Soroban +// // fixed-point arithmetic prices / balances / similar "quantities". These +// // are represented in XDR as a pair of 2 u64s, unlike {u,i}256 which is +// // represented as an array of 32 bytes. +// SCV_U128 = 9, +// SCV_I128 = 10, +// +// // 256 bits is the size of sha256 output, ed25519 keys, and the EVM machine +// // word, so for interop use we include this even though it requires a small +// // amount of Rust guest and/or host library code. +// SCV_U256 = 11, +// SCV_I256 = 12, +// +// // Bytes come in 3 flavors, 2 of which have meaningfully different +// // formatting and validity-checking / domain-restriction. +// SCV_BYTES = 13, +// SCV_STRING = 14, +// SCV_SYMBOL = 15, +// +// // Vecs and maps are just polymorphic containers of other ScVals. +// SCV_VEC = 16, +// SCV_MAP = 17, +// +// // Address is the universal identifier for contracts and classic +// // accounts. +// SCV_ADDRESS = 18, +// +// // The following are the internal SCVal variants that are not +// // exposed to the contracts. +// SCV_CONTRACT_INSTANCE = 19, +// +// // SCV_LEDGER_KEY_CONTRACT_INSTANCE and SCV_LEDGER_KEY_NONCE are unique +// // symbolic SCVals used as the key for ledger entries for a contract's +// // instance and an address' nonce, respectively. +// SCV_LEDGER_KEY_CONTRACT_INSTANCE = 20, +// SCV_LEDGER_KEY_NONCE = 21 +// }; + +// =========================================================================== +public enum SCValType implements XdrElement { + SCV_BOOL(0), + SCV_VOID(1), + SCV_ERROR(2), + SCV_U32(3), + SCV_I32(4), + SCV_U64(5), + SCV_I64(6), + SCV_TIMEPOINT(7), + SCV_DURATION(8), + SCV_U128(9), + SCV_I128(10), + SCV_U256(11), + SCV_I256(12), + SCV_BYTES(13), + SCV_STRING(14), + SCV_SYMBOL(15), + SCV_VEC(16), + SCV_MAP(17), + SCV_ADDRESS(18), + SCV_CONTRACT_INSTANCE(19), + SCV_LEDGER_KEY_CONTRACT_INSTANCE(20), + SCV_LEDGER_KEY_NONCE(21), + ; + private int mValue; + + SCValType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static SCValType decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return SCV_BOOL; + case 1: + return SCV_VOID; + case 2: + return SCV_ERROR; + case 3: + return SCV_U32; + case 4: + return SCV_I32; + case 5: + return SCV_U64; + case 6: + return SCV_I64; + case 7: + return SCV_TIMEPOINT; + case 8: + return SCV_DURATION; + case 9: + return SCV_U128; + case 10: + return SCV_I128; + case 11: + return SCV_U256; + case 12: + return SCV_I256; + case 13: + return SCV_BYTES; + case 14: + return SCV_STRING; + case 15: + return SCV_SYMBOL; + case 16: + return SCV_VEC; + case 17: + return SCV_MAP; + case 18: + return SCV_ADDRESS; + case 19: + return SCV_CONTRACT_INSTANCE; + case 20: + return SCV_LEDGER_KEY_CONTRACT_INSTANCE; + case 21: + return SCV_LEDGER_KEY_NONCE; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, SCValType value) throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SCVec.java b/src/main/java/org/stellar/sdk/xdr/SCVec.java new file mode 100644 index 000000000..69594dc52 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SCVec.java @@ -0,0 +1,69 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// typedef SCVal SCVec<>; + +// =========================================================================== +public class SCVec implements XdrElement { + private SCVal[] SCVec; + + public SCVec() {} + + public SCVec(SCVal[] SCVec) { + this.SCVec = SCVec; + } + + public SCVal[] getSCVec() { + return this.SCVec; + } + + public void setSCVec(SCVal[] value) { + this.SCVec = value; + } + + public static void encode(XdrDataOutputStream stream, SCVec encodedSCVec) throws IOException { + int SCVecsize = encodedSCVec.getSCVec().length; + stream.writeInt(SCVecsize); + for (int i = 0; i < SCVecsize; i++) { + SCVal.encode(stream, encodedSCVec.SCVec[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SCVec decode(XdrDataInputStream stream) throws IOException { + SCVec decodedSCVec = new SCVec(); + int SCVecsize = stream.readInt(); + decodedSCVec.SCVec = new SCVal[SCVecsize]; + for (int i = 0; i < SCVecsize; i++) { + decodedSCVec.SCVec[i] = SCVal.decode(stream); + } + return decodedSCVec; + } + + @Override + public int hashCode() { + return Arrays.hashCode(this.SCVec); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SCVec)) { + return false; + } + + SCVec other = (SCVec) object; + return Arrays.equals(this.SCVec, other.SCVec); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SendMore.java b/src/main/java/org/stellar/sdk/xdr/SendMore.java index ec7537759..44738a60e 100644 --- a/src/main/java/org/stellar/sdk/xdr/SendMore.java +++ b/src/main/java/org/stellar/sdk/xdr/SendMore.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -67,7 +69,7 @@ public Builder numMessages(Uint32 numMessages) { public SendMore build() { SendMore val = new SendMore(); - val.setNumMessages(numMessages); + val.setNumMessages(this.numMessages); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SendMoreExtended.java b/src/main/java/org/stellar/sdk/xdr/SendMoreExtended.java new file mode 100644 index 000000000..0656a3dc2 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SendMoreExtended.java @@ -0,0 +1,97 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SendMoreExtended +// { +// uint32 numMessages; +// uint32 numBytes; +// }; + +// =========================================================================== +public class SendMoreExtended implements XdrElement { + public SendMoreExtended() {} + + private Uint32 numMessages; + + public Uint32 getNumMessages() { + return this.numMessages; + } + + public void setNumMessages(Uint32 value) { + this.numMessages = value; + } + + private Uint32 numBytes; + + public Uint32 getNumBytes() { + return this.numBytes; + } + + public void setNumBytes(Uint32 value) { + this.numBytes = value; + } + + public static void encode(XdrDataOutputStream stream, SendMoreExtended encodedSendMoreExtended) + throws IOException { + Uint32.encode(stream, encodedSendMoreExtended.numMessages); + Uint32.encode(stream, encodedSendMoreExtended.numBytes); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SendMoreExtended decode(XdrDataInputStream stream) throws IOException { + SendMoreExtended decodedSendMoreExtended = new SendMoreExtended(); + decodedSendMoreExtended.numMessages = Uint32.decode(stream); + decodedSendMoreExtended.numBytes = Uint32.decode(stream); + return decodedSendMoreExtended; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.numMessages, this.numBytes); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SendMoreExtended)) { + return false; + } + + SendMoreExtended other = (SendMoreExtended) object; + return Objects.equal(this.numMessages, other.numMessages) + && Objects.equal(this.numBytes, other.numBytes); + } + + public static final class Builder { + private Uint32 numMessages; + private Uint32 numBytes; + + public Builder numMessages(Uint32 numMessages) { + this.numMessages = numMessages; + return this; + } + + public Builder numBytes(Uint32 numBytes) { + this.numBytes = numBytes; + return this; + } + + public SendMoreExtended build() { + SendMoreExtended val = new SendMoreExtended(); + val.setNumMessages(this.numMessages); + val.setNumBytes(this.numBytes); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SequenceNumber.java b/src/main/java/org/stellar/sdk/xdr/SequenceNumber.java index a300fd82a..8a8178d5e 100644 --- a/src/main/java/org/stellar/sdk/xdr/SequenceNumber.java +++ b/src/main/java/org/stellar/sdk/xdr/SequenceNumber.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; diff --git a/src/main/java/org/stellar/sdk/xdr/SetOptionsOp.java b/src/main/java/org/stellar/sdk/xdr/SetOptionsOp.java index fbc61bc30..39a561e38 100644 --- a/src/main/java/org/stellar/sdk/xdr/SetOptionsOp.java +++ b/src/main/java/org/stellar/sdk/xdr/SetOptionsOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -315,15 +317,15 @@ public Builder signer(Signer signer) { public SetOptionsOp build() { SetOptionsOp val = new SetOptionsOp(); - val.setInflationDest(inflationDest); - val.setClearFlags(clearFlags); - val.setSetFlags(setFlags); - val.setMasterWeight(masterWeight); - val.setLowThreshold(lowThreshold); - val.setMedThreshold(medThreshold); - val.setHighThreshold(highThreshold); - val.setHomeDomain(homeDomain); - val.setSigner(signer); + val.setInflationDest(this.inflationDest); + val.setClearFlags(this.clearFlags); + val.setSetFlags(this.setFlags); + val.setMasterWeight(this.masterWeight); + val.setLowThreshold(this.lowThreshold); + val.setMedThreshold(this.medThreshold); + val.setHighThreshold(this.highThreshold); + val.setHomeDomain(this.homeDomain); + val.setSigner(this.signer); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SetOptionsResult.java b/src/main/java/org/stellar/sdk/xdr/SetOptionsResult.java index ebafb0c18..422c23f68 100644 --- a/src/main/java/org/stellar/sdk/xdr/SetOptionsResult.java +++ b/src/main/java/org/stellar/sdk/xdr/SetOptionsResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,16 @@ // { // case SET_OPTIONS_SUCCESS: // void; -// default: +// case SET_OPTIONS_LOW_RESERVE: +// case SET_OPTIONS_TOO_MANY_SIGNERS: +// case SET_OPTIONS_BAD_FLAGS: +// case SET_OPTIONS_INVALID_INFLATION: +// case SET_OPTIONS_CANT_CHANGE: +// case SET_OPTIONS_UNKNOWN_FLAG: +// case SET_OPTIONS_THRESHOLD_OUT_OF_RANGE: +// case SET_OPTIONS_BAD_SIGNER: +// case SET_OPTIONS_INVALID_HOME_DOMAIN: +// case SET_OPTIONS_AUTH_REVOCABLE_REQUIRED: // void; // }; @@ -53,7 +64,16 @@ public static void encode(XdrDataOutputStream stream, SetOptionsResult encodedSe switch (encodedSetOptionsResult.getDiscriminant()) { case SET_OPTIONS_SUCCESS: break; - default: + case SET_OPTIONS_LOW_RESERVE: + case SET_OPTIONS_TOO_MANY_SIGNERS: + case SET_OPTIONS_BAD_FLAGS: + case SET_OPTIONS_INVALID_INFLATION: + case SET_OPTIONS_CANT_CHANGE: + case SET_OPTIONS_UNKNOWN_FLAG: + case SET_OPTIONS_THRESHOLD_OUT_OF_RANGE: + case SET_OPTIONS_BAD_SIGNER: + case SET_OPTIONS_INVALID_HOME_DOMAIN: + case SET_OPTIONS_AUTH_REVOCABLE_REQUIRED: break; } } @@ -69,7 +89,16 @@ public static SetOptionsResult decode(XdrDataInputStream stream) throws IOExcept switch (decodedSetOptionsResult.getDiscriminant()) { case SET_OPTIONS_SUCCESS: break; - default: + case SET_OPTIONS_LOW_RESERVE: + case SET_OPTIONS_TOO_MANY_SIGNERS: + case SET_OPTIONS_BAD_FLAGS: + case SET_OPTIONS_INVALID_INFLATION: + case SET_OPTIONS_CANT_CHANGE: + case SET_OPTIONS_UNKNOWN_FLAG: + case SET_OPTIONS_THRESHOLD_OUT_OF_RANGE: + case SET_OPTIONS_BAD_SIGNER: + case SET_OPTIONS_INVALID_HOME_DOMAIN: + case SET_OPTIONS_AUTH_REVOCABLE_REQUIRED: break; } return decodedSetOptionsResult; diff --git a/src/main/java/org/stellar/sdk/xdr/SetOptionsResultCode.java b/src/main/java/org/stellar/sdk/xdr/SetOptionsResultCode.java index 466ea4769..7d874cddd 100644 --- a/src/main/java/org/stellar/sdk/xdr/SetOptionsResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/SetOptionsResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsOp.java b/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsOp.java index a4cfe47f2..3a016082c 100644 --- a/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsOp.java +++ b/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsOp.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -129,10 +131,10 @@ public Builder setFlags(Uint32 setFlags) { public SetTrustLineFlagsOp build() { SetTrustLineFlagsOp val = new SetTrustLineFlagsOp(); - val.setTrustor(trustor); - val.setAsset(asset); - val.setClearFlags(clearFlags); - val.setSetFlags(setFlags); + val.setTrustor(this.trustor); + val.setAsset(this.asset); + val.setClearFlags(this.clearFlags); + val.setSetFlags(this.setFlags); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResult.java b/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResult.java index 1938eac61..30f608e58 100644 --- a/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResult.java +++ b/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -12,7 +14,11 @@ // { // case SET_TRUST_LINE_FLAGS_SUCCESS: // void; -// default: +// case SET_TRUST_LINE_FLAGS_MALFORMED: +// case SET_TRUST_LINE_FLAGS_NO_TRUST_LINE: +// case SET_TRUST_LINE_FLAGS_CANT_REVOKE: +// case SET_TRUST_LINE_FLAGS_INVALID_STATE: +// case SET_TRUST_LINE_FLAGS_LOW_RESERVE: // void; // }; @@ -54,7 +60,11 @@ public static void encode( switch (encodedSetTrustLineFlagsResult.getDiscriminant()) { case SET_TRUST_LINE_FLAGS_SUCCESS: break; - default: + case SET_TRUST_LINE_FLAGS_MALFORMED: + case SET_TRUST_LINE_FLAGS_NO_TRUST_LINE: + case SET_TRUST_LINE_FLAGS_CANT_REVOKE: + case SET_TRUST_LINE_FLAGS_INVALID_STATE: + case SET_TRUST_LINE_FLAGS_LOW_RESERVE: break; } } @@ -70,7 +80,11 @@ public static SetTrustLineFlagsResult decode(XdrDataInputStream stream) throws I switch (decodedSetTrustLineFlagsResult.getDiscriminant()) { case SET_TRUST_LINE_FLAGS_SUCCESS: break; - default: + case SET_TRUST_LINE_FLAGS_MALFORMED: + case SET_TRUST_LINE_FLAGS_NO_TRUST_LINE: + case SET_TRUST_LINE_FLAGS_CANT_REVOKE: + case SET_TRUST_LINE_FLAGS_INVALID_STATE: + case SET_TRUST_LINE_FLAGS_LOW_RESERVE: break; } return decodedSetTrustLineFlagsResult; diff --git a/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResultCode.java b/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResultCode.java index 9714bef41..e26de75a6 100644 --- a/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/Signature.java b/src/main/java/org/stellar/sdk/xdr/Signature.java index 2616ae0ca..e0b8689f1 100644 --- a/src/main/java/org/stellar/sdk/xdr/Signature.java +++ b/src/main/java/org/stellar/sdk/xdr/Signature.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/org/stellar/sdk/xdr/SignatureHint.java b/src/main/java/org/stellar/sdk/xdr/SignatureHint.java index 3cb8b3df0..0dba1fca7 100644 --- a/src/main/java/org/stellar/sdk/xdr/SignatureHint.java +++ b/src/main/java/org/stellar/sdk/xdr/SignatureHint.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/org/stellar/sdk/xdr/SignedSurveyRequestMessage.java b/src/main/java/org/stellar/sdk/xdr/SignedSurveyRequestMessage.java index 49acda013..a4efce260 100644 --- a/src/main/java/org/stellar/sdk/xdr/SignedSurveyRequestMessage.java +++ b/src/main/java/org/stellar/sdk/xdr/SignedSurveyRequestMessage.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -88,8 +90,8 @@ public Builder request(SurveyRequestMessage request) { public SignedSurveyRequestMessage build() { SignedSurveyRequestMessage val = new SignedSurveyRequestMessage(); - val.setRequestSignature(requestSignature); - val.setRequest(request); + val.setRequestSignature(this.requestSignature); + val.setRequest(this.request); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SignedSurveyResponseMessage.java b/src/main/java/org/stellar/sdk/xdr/SignedSurveyResponseMessage.java index be424049c..b611590a9 100644 --- a/src/main/java/org/stellar/sdk/xdr/SignedSurveyResponseMessage.java +++ b/src/main/java/org/stellar/sdk/xdr/SignedSurveyResponseMessage.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -89,8 +91,8 @@ public Builder response(SurveyResponseMessage response) { public SignedSurveyResponseMessage build() { SignedSurveyResponseMessage val = new SignedSurveyResponseMessage(); - val.setResponseSignature(responseSignature); - val.setResponse(response); + val.setResponseSignature(this.responseSignature); + val.setResponse(this.response); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/Signer.java b/src/main/java/org/stellar/sdk/xdr/Signer.java index 3a57efea7..594bbf4f2 100644 --- a/src/main/java/org/stellar/sdk/xdr/Signer.java +++ b/src/main/java/org/stellar/sdk/xdr/Signer.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -85,8 +87,8 @@ public Builder weight(Uint32 weight) { public Signer build() { Signer val = new Signer(); - val.setKey(key); - val.setWeight(weight); + val.setKey(this.key); + val.setWeight(this.weight); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SignerKey.java b/src/main/java/org/stellar/sdk/xdr/SignerKey.java index 3522883d0..c2b0d660d 100644 --- a/src/main/java/org/stellar/sdk/xdr/SignerKey.java +++ b/src/main/java/org/stellar/sdk/xdr/SignerKey.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -118,10 +120,10 @@ public Builder ed25519SignedPayload(SignerKeyEd25519SignedPayload ed25519SignedP public SignerKey build() { SignerKey val = new SignerKey(); val.setDiscriminant(discriminant); - val.setEd25519(ed25519); - val.setPreAuthTx(preAuthTx); - val.setHashX(hashX); - val.setEd25519SignedPayload(ed25519SignedPayload); + val.setEd25519(this.ed25519); + val.setPreAuthTx(this.preAuthTx); + val.setHashX(this.hashX); + val.setEd25519SignedPayload(this.ed25519SignedPayload); return val; } } @@ -272,8 +274,8 @@ public Builder payload(byte[] payload) { public SignerKeyEd25519SignedPayload build() { SignerKeyEd25519SignedPayload val = new SignerKeyEd25519SignedPayload(); - val.setEd25519(ed25519); - val.setPayload(payload); + val.setEd25519(this.ed25519); + val.setPayload(this.payload); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SignerKeyType.java b/src/main/java/org/stellar/sdk/xdr/SignerKeyType.java index 89b320d91..f5fb66af0 100644 --- a/src/main/java/org/stellar/sdk/xdr/SignerKeyType.java +++ b/src/main/java/org/stellar/sdk/xdr/SignerKeyType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/SimplePaymentResult.java b/src/main/java/org/stellar/sdk/xdr/SimplePaymentResult.java index 07bd2e388..104b958d6 100644 --- a/src/main/java/org/stellar/sdk/xdr/SimplePaymentResult.java +++ b/src/main/java/org/stellar/sdk/xdr/SimplePaymentResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -108,9 +110,9 @@ public Builder amount(Int64 amount) { public SimplePaymentResult build() { SimplePaymentResult val = new SimplePaymentResult(); - val.setDestination(destination); - val.setAsset(asset); - val.setAmount(amount); + val.setDestination(this.destination); + val.setAsset(this.asset); + val.setAmount(this.amount); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanAddressCredentials.java b/src/main/java/org/stellar/sdk/xdr/SorobanAddressCredentials.java new file mode 100644 index 000000000..272a08b3a --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SorobanAddressCredentials.java @@ -0,0 +1,141 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SorobanAddressCredentials +// { +// SCAddress address; +// int64 nonce; +// uint32 signatureExpirationLedger; +// SCVec signatureArgs; +// }; + +// =========================================================================== +public class SorobanAddressCredentials implements XdrElement { + public SorobanAddressCredentials() {} + + private SCAddress address; + + public SCAddress getAddress() { + return this.address; + } + + public void setAddress(SCAddress value) { + this.address = value; + } + + private Int64 nonce; + + public Int64 getNonce() { + return this.nonce; + } + + public void setNonce(Int64 value) { + this.nonce = value; + } + + private Uint32 signatureExpirationLedger; + + public Uint32 getSignatureExpirationLedger() { + return this.signatureExpirationLedger; + } + + public void setSignatureExpirationLedger(Uint32 value) { + this.signatureExpirationLedger = value; + } + + private SCVec signatureArgs; + + public SCVec getSignatureArgs() { + return this.signatureArgs; + } + + public void setSignatureArgs(SCVec value) { + this.signatureArgs = value; + } + + public static void encode( + XdrDataOutputStream stream, SorobanAddressCredentials encodedSorobanAddressCredentials) + throws IOException { + SCAddress.encode(stream, encodedSorobanAddressCredentials.address); + Int64.encode(stream, encodedSorobanAddressCredentials.nonce); + Uint32.encode(stream, encodedSorobanAddressCredentials.signatureExpirationLedger); + SCVec.encode(stream, encodedSorobanAddressCredentials.signatureArgs); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SorobanAddressCredentials decode(XdrDataInputStream stream) throws IOException { + SorobanAddressCredentials decodedSorobanAddressCredentials = new SorobanAddressCredentials(); + decodedSorobanAddressCredentials.address = SCAddress.decode(stream); + decodedSorobanAddressCredentials.nonce = Int64.decode(stream); + decodedSorobanAddressCredentials.signatureExpirationLedger = Uint32.decode(stream); + decodedSorobanAddressCredentials.signatureArgs = SCVec.decode(stream); + return decodedSorobanAddressCredentials; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.address, this.nonce, this.signatureExpirationLedger, this.signatureArgs); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SorobanAddressCredentials)) { + return false; + } + + SorobanAddressCredentials other = (SorobanAddressCredentials) object; + return Objects.equal(this.address, other.address) + && Objects.equal(this.nonce, other.nonce) + && Objects.equal(this.signatureExpirationLedger, other.signatureExpirationLedger) + && Objects.equal(this.signatureArgs, other.signatureArgs); + } + + public static final class Builder { + private SCAddress address; + private Int64 nonce; + private Uint32 signatureExpirationLedger; + private SCVec signatureArgs; + + public Builder address(SCAddress address) { + this.address = address; + return this; + } + + public Builder nonce(Int64 nonce) { + this.nonce = nonce; + return this; + } + + public Builder signatureExpirationLedger(Uint32 signatureExpirationLedger) { + this.signatureExpirationLedger = signatureExpirationLedger; + return this; + } + + public Builder signatureArgs(SCVec signatureArgs) { + this.signatureArgs = signatureArgs; + return this; + } + + public SorobanAddressCredentials build() { + SorobanAddressCredentials val = new SorobanAddressCredentials(); + val.setAddress(this.address); + val.setNonce(this.nonce); + val.setSignatureExpirationLedger(this.signatureExpirationLedger); + val.setSignatureArgs(this.signatureArgs); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizationEntry.java b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizationEntry.java new file mode 100644 index 000000000..74da85821 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizationEntry.java @@ -0,0 +1,98 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SorobanAuthorizationEntry +// { +// SorobanCredentials credentials; +// SorobanAuthorizedInvocation rootInvocation; +// }; + +// =========================================================================== +public class SorobanAuthorizationEntry implements XdrElement { + public SorobanAuthorizationEntry() {} + + private SorobanCredentials credentials; + + public SorobanCredentials getCredentials() { + return this.credentials; + } + + public void setCredentials(SorobanCredentials value) { + this.credentials = value; + } + + private SorobanAuthorizedInvocation rootInvocation; + + public SorobanAuthorizedInvocation getRootInvocation() { + return this.rootInvocation; + } + + public void setRootInvocation(SorobanAuthorizedInvocation value) { + this.rootInvocation = value; + } + + public static void encode( + XdrDataOutputStream stream, SorobanAuthorizationEntry encodedSorobanAuthorizationEntry) + throws IOException { + SorobanCredentials.encode(stream, encodedSorobanAuthorizationEntry.credentials); + SorobanAuthorizedInvocation.encode(stream, encodedSorobanAuthorizationEntry.rootInvocation); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SorobanAuthorizationEntry decode(XdrDataInputStream stream) throws IOException { + SorobanAuthorizationEntry decodedSorobanAuthorizationEntry = new SorobanAuthorizationEntry(); + decodedSorobanAuthorizationEntry.credentials = SorobanCredentials.decode(stream); + decodedSorobanAuthorizationEntry.rootInvocation = SorobanAuthorizedInvocation.decode(stream); + return decodedSorobanAuthorizationEntry; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.credentials, this.rootInvocation); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SorobanAuthorizationEntry)) { + return false; + } + + SorobanAuthorizationEntry other = (SorobanAuthorizationEntry) object; + return Objects.equal(this.credentials, other.credentials) + && Objects.equal(this.rootInvocation, other.rootInvocation); + } + + public static final class Builder { + private SorobanCredentials credentials; + private SorobanAuthorizedInvocation rootInvocation; + + public Builder credentials(SorobanCredentials credentials) { + this.credentials = credentials; + return this; + } + + public Builder rootInvocation(SorobanAuthorizedInvocation rootInvocation) { + this.rootInvocation = rootInvocation; + return this; + } + + public SorobanAuthorizationEntry build() { + SorobanAuthorizationEntry val = new SorobanAuthorizationEntry(); + val.setCredentials(this.credentials); + val.setRootInvocation(this.rootInvocation); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedContractFunction.java b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedContractFunction.java new file mode 100644 index 000000000..f690f590d --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedContractFunction.java @@ -0,0 +1,122 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SorobanAuthorizedContractFunction +// { +// SCAddress contractAddress; +// SCSymbol functionName; +// SCVec args; +// }; + +// =========================================================================== +public class SorobanAuthorizedContractFunction implements XdrElement { + public SorobanAuthorizedContractFunction() {} + + private SCAddress contractAddress; + + public SCAddress getContractAddress() { + return this.contractAddress; + } + + public void setContractAddress(SCAddress value) { + this.contractAddress = value; + } + + private SCSymbol functionName; + + public SCSymbol getFunctionName() { + return this.functionName; + } + + public void setFunctionName(SCSymbol value) { + this.functionName = value; + } + + private SCVec args; + + public SCVec getArgs() { + return this.args; + } + + public void setArgs(SCVec value) { + this.args = value; + } + + public static void encode( + XdrDataOutputStream stream, + SorobanAuthorizedContractFunction encodedSorobanAuthorizedContractFunction) + throws IOException { + SCAddress.encode(stream, encodedSorobanAuthorizedContractFunction.contractAddress); + SCSymbol.encode(stream, encodedSorobanAuthorizedContractFunction.functionName); + SCVec.encode(stream, encodedSorobanAuthorizedContractFunction.args); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SorobanAuthorizedContractFunction decode(XdrDataInputStream stream) + throws IOException { + SorobanAuthorizedContractFunction decodedSorobanAuthorizedContractFunction = + new SorobanAuthorizedContractFunction(); + decodedSorobanAuthorizedContractFunction.contractAddress = SCAddress.decode(stream); + decodedSorobanAuthorizedContractFunction.functionName = SCSymbol.decode(stream); + decodedSorobanAuthorizedContractFunction.args = SCVec.decode(stream); + return decodedSorobanAuthorizedContractFunction; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.contractAddress, this.functionName, this.args); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SorobanAuthorizedContractFunction)) { + return false; + } + + SorobanAuthorizedContractFunction other = (SorobanAuthorizedContractFunction) object; + return Objects.equal(this.contractAddress, other.contractAddress) + && Objects.equal(this.functionName, other.functionName) + && Objects.equal(this.args, other.args); + } + + public static final class Builder { + private SCAddress contractAddress; + private SCSymbol functionName; + private SCVec args; + + public Builder contractAddress(SCAddress contractAddress) { + this.contractAddress = contractAddress; + return this; + } + + public Builder functionName(SCSymbol functionName) { + this.functionName = functionName; + return this; + } + + public Builder args(SCVec args) { + this.args = args; + return this; + } + + public SorobanAuthorizedContractFunction build() { + SorobanAuthorizedContractFunction val = new SorobanAuthorizedContractFunction(); + val.setContractAddress(this.contractAddress); + val.setFunctionName(this.functionName); + val.setArgs(this.args); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunction.java b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunction.java new file mode 100644 index 000000000..c0ef0f14c --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunction.java @@ -0,0 +1,137 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union SorobanAuthorizedFunction switch (SorobanAuthorizedFunctionType type) +// { +// case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN: +// SorobanAuthorizedContractFunction contractFn; +// case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN: +// CreateContractArgs createContractHostFn; +// }; + +// =========================================================================== +public class SorobanAuthorizedFunction implements XdrElement { + public SorobanAuthorizedFunction() {} + + SorobanAuthorizedFunctionType type; + + public SorobanAuthorizedFunctionType getDiscriminant() { + return this.type; + } + + public void setDiscriminant(SorobanAuthorizedFunctionType value) { + this.type = value; + } + + private SorobanAuthorizedContractFunction contractFn; + + public SorobanAuthorizedContractFunction getContractFn() { + return this.contractFn; + } + + public void setContractFn(SorobanAuthorizedContractFunction value) { + this.contractFn = value; + } + + private CreateContractArgs createContractHostFn; + + public CreateContractArgs getCreateContractHostFn() { + return this.createContractHostFn; + } + + public void setCreateContractHostFn(CreateContractArgs value) { + this.createContractHostFn = value; + } + + public static final class Builder { + private SorobanAuthorizedFunctionType discriminant; + private SorobanAuthorizedContractFunction contractFn; + private CreateContractArgs createContractHostFn; + + public Builder discriminant(SorobanAuthorizedFunctionType discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder contractFn(SorobanAuthorizedContractFunction contractFn) { + this.contractFn = contractFn; + return this; + } + + public Builder createContractHostFn(CreateContractArgs createContractHostFn) { + this.createContractHostFn = createContractHostFn; + return this; + } + + public SorobanAuthorizedFunction build() { + SorobanAuthorizedFunction val = new SorobanAuthorizedFunction(); + val.setDiscriminant(discriminant); + val.setContractFn(this.contractFn); + val.setCreateContractHostFn(this.createContractHostFn); + return val; + } + } + + public static void encode( + XdrDataOutputStream stream, SorobanAuthorizedFunction encodedSorobanAuthorizedFunction) + throws IOException { + // Xdrgen::AST::Identifier + // SorobanAuthorizedFunctionType + stream.writeInt(encodedSorobanAuthorizedFunction.getDiscriminant().getValue()); + switch (encodedSorobanAuthorizedFunction.getDiscriminant()) { + case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN: + SorobanAuthorizedContractFunction.encode( + stream, encodedSorobanAuthorizedFunction.contractFn); + break; + case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN: + CreateContractArgs.encode(stream, encodedSorobanAuthorizedFunction.createContractHostFn); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SorobanAuthorizedFunction decode(XdrDataInputStream stream) throws IOException { + SorobanAuthorizedFunction decodedSorobanAuthorizedFunction = new SorobanAuthorizedFunction(); + SorobanAuthorizedFunctionType discriminant = SorobanAuthorizedFunctionType.decode(stream); + decodedSorobanAuthorizedFunction.setDiscriminant(discriminant); + switch (decodedSorobanAuthorizedFunction.getDiscriminant()) { + case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN: + decodedSorobanAuthorizedFunction.contractFn = + SorobanAuthorizedContractFunction.decode(stream); + break; + case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN: + decodedSorobanAuthorizedFunction.createContractHostFn = CreateContractArgs.decode(stream); + break; + } + return decodedSorobanAuthorizedFunction; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.contractFn, this.createContractHostFn, this.type); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SorobanAuthorizedFunction)) { + return false; + } + + SorobanAuthorizedFunction other = (SorobanAuthorizedFunction) object; + return Objects.equal(this.contractFn, other.contractFn) + && Objects.equal(this.createContractHostFn, other.createContractHostFn) + && Objects.equal(this.type, other.type); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunctionType.java b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunctionType.java new file mode 100644 index 000000000..d4cb00caa --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunctionType.java @@ -0,0 +1,53 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum SorobanAuthorizedFunctionType +// { +// SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN = 0, +// SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN = 1 +// }; + +// =========================================================================== +public enum SorobanAuthorizedFunctionType implements XdrElement { + SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN(0), + SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN(1), + ; + private int mValue; + + SorobanAuthorizedFunctionType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static SorobanAuthorizedFunctionType decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN; + case 1: + return SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, SorobanAuthorizedFunctionType value) + throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedInvocation.java b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedInvocation.java new file mode 100644 index 000000000..994508930 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedInvocation.java @@ -0,0 +1,111 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct SorobanAuthorizedInvocation +// { +// SorobanAuthorizedFunction function; +// SorobanAuthorizedInvocation subInvocations<>; +// }; + +// =========================================================================== +public class SorobanAuthorizedInvocation implements XdrElement { + public SorobanAuthorizedInvocation() {} + + private SorobanAuthorizedFunction function; + + public SorobanAuthorizedFunction getFunction() { + return this.function; + } + + public void setFunction(SorobanAuthorizedFunction value) { + this.function = value; + } + + private SorobanAuthorizedInvocation[] subInvocations; + + public SorobanAuthorizedInvocation[] getSubInvocations() { + return this.subInvocations; + } + + public void setSubInvocations(SorobanAuthorizedInvocation[] value) { + this.subInvocations = value; + } + + public static void encode( + XdrDataOutputStream stream, SorobanAuthorizedInvocation encodedSorobanAuthorizedInvocation) + throws IOException { + SorobanAuthorizedFunction.encode(stream, encodedSorobanAuthorizedInvocation.function); + int subInvocationssize = encodedSorobanAuthorizedInvocation.getSubInvocations().length; + stream.writeInt(subInvocationssize); + for (int i = 0; i < subInvocationssize; i++) { + SorobanAuthorizedInvocation.encode( + stream, encodedSorobanAuthorizedInvocation.subInvocations[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SorobanAuthorizedInvocation decode(XdrDataInputStream stream) throws IOException { + SorobanAuthorizedInvocation decodedSorobanAuthorizedInvocation = + new SorobanAuthorizedInvocation(); + decodedSorobanAuthorizedInvocation.function = SorobanAuthorizedFunction.decode(stream); + int subInvocationssize = stream.readInt(); + decodedSorobanAuthorizedInvocation.subInvocations = + new SorobanAuthorizedInvocation[subInvocationssize]; + for (int i = 0; i < subInvocationssize; i++) { + decodedSorobanAuthorizedInvocation.subInvocations[i] = + SorobanAuthorizedInvocation.decode(stream); + } + return decodedSorobanAuthorizedInvocation; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.function, Arrays.hashCode(this.subInvocations)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SorobanAuthorizedInvocation)) { + return false; + } + + SorobanAuthorizedInvocation other = (SorobanAuthorizedInvocation) object; + return Objects.equal(this.function, other.function) + && Arrays.equals(this.subInvocations, other.subInvocations); + } + + public static final class Builder { + private SorobanAuthorizedFunction function; + private SorobanAuthorizedInvocation[] subInvocations; + + public Builder function(SorobanAuthorizedFunction function) { + this.function = function; + return this; + } + + public Builder subInvocations(SorobanAuthorizedInvocation[] subInvocations) { + this.subInvocations = subInvocations; + return this; + } + + public SorobanAuthorizedInvocation build() { + SorobanAuthorizedInvocation val = new SorobanAuthorizedInvocation(); + val.setFunction(this.function); + val.setSubInvocations(this.subInvocations); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanCredentials.java b/src/main/java/org/stellar/sdk/xdr/SorobanCredentials.java new file mode 100644 index 000000000..88a21e72a --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SorobanCredentials.java @@ -0,0 +1,113 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union SorobanCredentials switch (SorobanCredentialsType type) +// { +// case SOROBAN_CREDENTIALS_SOURCE_ACCOUNT: +// void; +// case SOROBAN_CREDENTIALS_ADDRESS: +// SorobanAddressCredentials address; +// }; + +// =========================================================================== +public class SorobanCredentials implements XdrElement { + public SorobanCredentials() {} + + SorobanCredentialsType type; + + public SorobanCredentialsType getDiscriminant() { + return this.type; + } + + public void setDiscriminant(SorobanCredentialsType value) { + this.type = value; + } + + private SorobanAddressCredentials address; + + public SorobanAddressCredentials getAddress() { + return this.address; + } + + public void setAddress(SorobanAddressCredentials value) { + this.address = value; + } + + public static final class Builder { + private SorobanCredentialsType discriminant; + private SorobanAddressCredentials address; + + public Builder discriminant(SorobanCredentialsType discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder address(SorobanAddressCredentials address) { + this.address = address; + return this; + } + + public SorobanCredentials build() { + SorobanCredentials val = new SorobanCredentials(); + val.setDiscriminant(discriminant); + val.setAddress(this.address); + return val; + } + } + + public static void encode( + XdrDataOutputStream stream, SorobanCredentials encodedSorobanCredentials) throws IOException { + // Xdrgen::AST::Identifier + // SorobanCredentialsType + stream.writeInt(encodedSorobanCredentials.getDiscriminant().getValue()); + switch (encodedSorobanCredentials.getDiscriminant()) { + case SOROBAN_CREDENTIALS_SOURCE_ACCOUNT: + break; + case SOROBAN_CREDENTIALS_ADDRESS: + SorobanAddressCredentials.encode(stream, encodedSorobanCredentials.address); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SorobanCredentials decode(XdrDataInputStream stream) throws IOException { + SorobanCredentials decodedSorobanCredentials = new SorobanCredentials(); + SorobanCredentialsType discriminant = SorobanCredentialsType.decode(stream); + decodedSorobanCredentials.setDiscriminant(discriminant); + switch (decodedSorobanCredentials.getDiscriminant()) { + case SOROBAN_CREDENTIALS_SOURCE_ACCOUNT: + break; + case SOROBAN_CREDENTIALS_ADDRESS: + decodedSorobanCredentials.address = SorobanAddressCredentials.decode(stream); + break; + } + return decodedSorobanCredentials; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.address, this.type); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SorobanCredentials)) { + return false; + } + + SorobanCredentials other = (SorobanCredentials) object; + return Objects.equal(this.address, other.address) && Objects.equal(this.type, other.type); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanCredentialsType.java b/src/main/java/org/stellar/sdk/xdr/SorobanCredentialsType.java new file mode 100644 index 000000000..85ebf85f7 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SorobanCredentialsType.java @@ -0,0 +1,53 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum SorobanCredentialsType +// { +// SOROBAN_CREDENTIALS_SOURCE_ACCOUNT = 0, +// SOROBAN_CREDENTIALS_ADDRESS = 1 +// }; + +// =========================================================================== +public enum SorobanCredentialsType implements XdrElement { + SOROBAN_CREDENTIALS_SOURCE_ACCOUNT(0), + SOROBAN_CREDENTIALS_ADDRESS(1), + ; + private int mValue; + + SorobanCredentialsType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static SorobanCredentialsType decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return SOROBAN_CREDENTIALS_SOURCE_ACCOUNT; + case 1: + return SOROBAN_CREDENTIALS_ADDRESS; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, SorobanCredentialsType value) + throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanResources.java b/src/main/java/org/stellar/sdk/xdr/SorobanResources.java new file mode 100644 index 000000000..531b5794e --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SorobanResources.java @@ -0,0 +1,173 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SorobanResources +// { +// // The ledger footprint of the transaction. +// LedgerFootprint footprint; +// // The maximum number of instructions this transaction can use +// uint32 instructions; +// +// // The maximum number of bytes this transaction can read from ledger +// uint32 readBytes; +// // The maximum number of bytes this transaction can write to ledger +// uint32 writeBytes; +// +// // Maximum size of dynamic metadata produced by this contract ( +// // bytes read from ledger + bytes written to ledger + event bytes written to meta). +// uint32 extendedMetaDataSizeBytes; +// }; + +// =========================================================================== +public class SorobanResources implements XdrElement { + public SorobanResources() {} + + private LedgerFootprint footprint; + + public LedgerFootprint getFootprint() { + return this.footprint; + } + + public void setFootprint(LedgerFootprint value) { + this.footprint = value; + } + + private Uint32 instructions; + + public Uint32 getInstructions() { + return this.instructions; + } + + public void setInstructions(Uint32 value) { + this.instructions = value; + } + + private Uint32 readBytes; + + public Uint32 getReadBytes() { + return this.readBytes; + } + + public void setReadBytes(Uint32 value) { + this.readBytes = value; + } + + private Uint32 writeBytes; + + public Uint32 getWriteBytes() { + return this.writeBytes; + } + + public void setWriteBytes(Uint32 value) { + this.writeBytes = value; + } + + private Uint32 extendedMetaDataSizeBytes; + + public Uint32 getExtendedMetaDataSizeBytes() { + return this.extendedMetaDataSizeBytes; + } + + public void setExtendedMetaDataSizeBytes(Uint32 value) { + this.extendedMetaDataSizeBytes = value; + } + + public static void encode(XdrDataOutputStream stream, SorobanResources encodedSorobanResources) + throws IOException { + LedgerFootprint.encode(stream, encodedSorobanResources.footprint); + Uint32.encode(stream, encodedSorobanResources.instructions); + Uint32.encode(stream, encodedSorobanResources.readBytes); + Uint32.encode(stream, encodedSorobanResources.writeBytes); + Uint32.encode(stream, encodedSorobanResources.extendedMetaDataSizeBytes); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SorobanResources decode(XdrDataInputStream stream) throws IOException { + SorobanResources decodedSorobanResources = new SorobanResources(); + decodedSorobanResources.footprint = LedgerFootprint.decode(stream); + decodedSorobanResources.instructions = Uint32.decode(stream); + decodedSorobanResources.readBytes = Uint32.decode(stream); + decodedSorobanResources.writeBytes = Uint32.decode(stream); + decodedSorobanResources.extendedMetaDataSizeBytes = Uint32.decode(stream); + return decodedSorobanResources; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.footprint, + this.instructions, + this.readBytes, + this.writeBytes, + this.extendedMetaDataSizeBytes); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SorobanResources)) { + return false; + } + + SorobanResources other = (SorobanResources) object; + return Objects.equal(this.footprint, other.footprint) + && Objects.equal(this.instructions, other.instructions) + && Objects.equal(this.readBytes, other.readBytes) + && Objects.equal(this.writeBytes, other.writeBytes) + && Objects.equal(this.extendedMetaDataSizeBytes, other.extendedMetaDataSizeBytes); + } + + public static final class Builder { + private LedgerFootprint footprint; + private Uint32 instructions; + private Uint32 readBytes; + private Uint32 writeBytes; + private Uint32 extendedMetaDataSizeBytes; + + public Builder footprint(LedgerFootprint footprint) { + this.footprint = footprint; + return this; + } + + public Builder instructions(Uint32 instructions) { + this.instructions = instructions; + return this; + } + + public Builder readBytes(Uint32 readBytes) { + this.readBytes = readBytes; + return this; + } + + public Builder writeBytes(Uint32 writeBytes) { + this.writeBytes = writeBytes; + return this; + } + + public Builder extendedMetaDataSizeBytes(Uint32 extendedMetaDataSizeBytes) { + this.extendedMetaDataSizeBytes = extendedMetaDataSizeBytes; + return this; + } + + public SorobanResources build() { + SorobanResources val = new SorobanResources(); + val.setFootprint(this.footprint); + val.setInstructions(this.instructions); + val.setReadBytes(this.readBytes); + val.setWriteBytes(this.writeBytes); + val.setExtendedMetaDataSizeBytes(this.extendedMetaDataSizeBytes); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanTransactionData.java b/src/main/java/org/stellar/sdk/xdr/SorobanTransactionData.java new file mode 100644 index 000000000..d8fff4305 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SorobanTransactionData.java @@ -0,0 +1,120 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct SorobanTransactionData +// { +// ExtensionPoint ext; +// SorobanResources resources; +// // Portion of transaction `fee` allocated to refundable fees. +// int64 refundableFee; +// }; + +// =========================================================================== +public class SorobanTransactionData implements XdrElement { + public SorobanTransactionData() {} + + private ExtensionPoint ext; + + public ExtensionPoint getExt() { + return this.ext; + } + + public void setExt(ExtensionPoint value) { + this.ext = value; + } + + private SorobanResources resources; + + public SorobanResources getResources() { + return this.resources; + } + + public void setResources(SorobanResources value) { + this.resources = value; + } + + private Int64 refundableFee; + + public Int64 getRefundableFee() { + return this.refundableFee; + } + + public void setRefundableFee(Int64 value) { + this.refundableFee = value; + } + + public static void encode( + XdrDataOutputStream stream, SorobanTransactionData encodedSorobanTransactionData) + throws IOException { + ExtensionPoint.encode(stream, encodedSorobanTransactionData.ext); + SorobanResources.encode(stream, encodedSorobanTransactionData.resources); + Int64.encode(stream, encodedSorobanTransactionData.refundableFee); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SorobanTransactionData decode(XdrDataInputStream stream) throws IOException { + SorobanTransactionData decodedSorobanTransactionData = new SorobanTransactionData(); + decodedSorobanTransactionData.ext = ExtensionPoint.decode(stream); + decodedSorobanTransactionData.resources = SorobanResources.decode(stream); + decodedSorobanTransactionData.refundableFee = Int64.decode(stream); + return decodedSorobanTransactionData; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.ext, this.resources, this.refundableFee); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SorobanTransactionData)) { + return false; + } + + SorobanTransactionData other = (SorobanTransactionData) object; + return Objects.equal(this.ext, other.ext) + && Objects.equal(this.resources, other.resources) + && Objects.equal(this.refundableFee, other.refundableFee); + } + + public static final class Builder { + private ExtensionPoint ext; + private SorobanResources resources; + private Int64 refundableFee; + + public Builder ext(ExtensionPoint ext) { + this.ext = ext; + return this; + } + + public Builder resources(SorobanResources resources) { + this.resources = resources; + return this; + } + + public Builder refundableFee(Int64 refundableFee) { + this.refundableFee = refundableFee; + return this; + } + + public SorobanTransactionData build() { + SorobanTransactionData val = new SorobanTransactionData(); + val.setExt(this.ext); + val.setResources(this.resources); + val.setRefundableFee(this.refundableFee); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanTransactionMeta.java b/src/main/java/org/stellar/sdk/xdr/SorobanTransactionMeta.java new file mode 100644 index 000000000..396cad274 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SorobanTransactionMeta.java @@ -0,0 +1,167 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct SorobanTransactionMeta +// { +// ExtensionPoint ext; +// +// ContractEvent events<>; // custom events populated by the +// // contracts themselves. +// SCVal returnValue; // return value of the host fn invocation +// +// // Diagnostics events that are not hashed. +// // This will contain all contract and diagnostic events. Even ones +// // that were emitted in a failed contract call. +// DiagnosticEvent diagnosticEvents<>; +// }; + +// =========================================================================== +public class SorobanTransactionMeta implements XdrElement { + public SorobanTransactionMeta() {} + + private ExtensionPoint ext; + + public ExtensionPoint getExt() { + return this.ext; + } + + public void setExt(ExtensionPoint value) { + this.ext = value; + } + + private ContractEvent[] events; + + public ContractEvent[] getEvents() { + return this.events; + } + + public void setEvents(ContractEvent[] value) { + this.events = value; + } + + private SCVal returnValue; + + public SCVal getReturnValue() { + return this.returnValue; + } + + public void setReturnValue(SCVal value) { + this.returnValue = value; + } + + private DiagnosticEvent[] diagnosticEvents; + + public DiagnosticEvent[] getDiagnosticEvents() { + return this.diagnosticEvents; + } + + public void setDiagnosticEvents(DiagnosticEvent[] value) { + this.diagnosticEvents = value; + } + + public static void encode( + XdrDataOutputStream stream, SorobanTransactionMeta encodedSorobanTransactionMeta) + throws IOException { + ExtensionPoint.encode(stream, encodedSorobanTransactionMeta.ext); + int eventssize = encodedSorobanTransactionMeta.getEvents().length; + stream.writeInt(eventssize); + for (int i = 0; i < eventssize; i++) { + ContractEvent.encode(stream, encodedSorobanTransactionMeta.events[i]); + } + SCVal.encode(stream, encodedSorobanTransactionMeta.returnValue); + int diagnosticEventssize = encodedSorobanTransactionMeta.getDiagnosticEvents().length; + stream.writeInt(diagnosticEventssize); + for (int i = 0; i < diagnosticEventssize; i++) { + DiagnosticEvent.encode(stream, encodedSorobanTransactionMeta.diagnosticEvents[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static SorobanTransactionMeta decode(XdrDataInputStream stream) throws IOException { + SorobanTransactionMeta decodedSorobanTransactionMeta = new SorobanTransactionMeta(); + decodedSorobanTransactionMeta.ext = ExtensionPoint.decode(stream); + int eventssize = stream.readInt(); + decodedSorobanTransactionMeta.events = new ContractEvent[eventssize]; + for (int i = 0; i < eventssize; i++) { + decodedSorobanTransactionMeta.events[i] = ContractEvent.decode(stream); + } + decodedSorobanTransactionMeta.returnValue = SCVal.decode(stream); + int diagnosticEventssize = stream.readInt(); + decodedSorobanTransactionMeta.diagnosticEvents = new DiagnosticEvent[diagnosticEventssize]; + for (int i = 0; i < diagnosticEventssize; i++) { + decodedSorobanTransactionMeta.diagnosticEvents[i] = DiagnosticEvent.decode(stream); + } + return decodedSorobanTransactionMeta; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.ext, + Arrays.hashCode(this.events), + this.returnValue, + Arrays.hashCode(this.diagnosticEvents)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof SorobanTransactionMeta)) { + return false; + } + + SorobanTransactionMeta other = (SorobanTransactionMeta) object; + return Objects.equal(this.ext, other.ext) + && Arrays.equals(this.events, other.events) + && Objects.equal(this.returnValue, other.returnValue) + && Arrays.equals(this.diagnosticEvents, other.diagnosticEvents); + } + + public static final class Builder { + private ExtensionPoint ext; + private ContractEvent[] events; + private SCVal returnValue; + private DiagnosticEvent[] diagnosticEvents; + + public Builder ext(ExtensionPoint ext) { + this.ext = ext; + return this; + } + + public Builder events(ContractEvent[] events) { + this.events = events; + return this; + } + + public Builder returnValue(SCVal returnValue) { + this.returnValue = returnValue; + return this; + } + + public Builder diagnosticEvents(DiagnosticEvent[] diagnosticEvents) { + this.diagnosticEvents = diagnosticEvents; + return this; + } + + public SorobanTransactionMeta build() { + SorobanTransactionMeta val = new SorobanTransactionMeta(); + val.setExt(this.ext); + val.setEvents(this.events); + val.setReturnValue(this.returnValue); + val.setDiagnosticEvents(this.diagnosticEvents); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SponsorshipDescriptor.java b/src/main/java/org/stellar/sdk/xdr/SponsorshipDescriptor.java index d64f8d171..9f85dc4ee 100644 --- a/src/main/java/org/stellar/sdk/xdr/SponsorshipDescriptor.java +++ b/src/main/java/org/stellar/sdk/xdr/SponsorshipDescriptor.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; diff --git a/src/main/java/org/stellar/sdk/xdr/StateExpirationSettings.java b/src/main/java/org/stellar/sdk/xdr/StateExpirationSettings.java new file mode 100644 index 000000000..2686ce32f --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/StateExpirationSettings.java @@ -0,0 +1,261 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct StateExpirationSettings { +// uint32 maxEntryExpiration; +// uint32 minTempEntryExpiration; +// uint32 minPersistentEntryExpiration; +// uint32 autoBumpLedgers; +// +// // rent_fee = wfee_rate_average / rent_rate_denominator_for_type +// int64 persistentRentRateDenominator; +// int64 tempRentRateDenominator; +// +// // max number of entries that emit expiration meta in a single ledger +// uint32 maxEntriesToExpire; +// +// // Number of snapshots to use when calculating average BucketList size +// uint32 bucketListSizeWindowSampleSize; +// +// // Maximum number of bytes that we scan for eviction per ledger +// uint64 evictionScanSize; +// }; + +// =========================================================================== +public class StateExpirationSettings implements XdrElement { + public StateExpirationSettings() {} + + private Uint32 maxEntryExpiration; + + public Uint32 getMaxEntryExpiration() { + return this.maxEntryExpiration; + } + + public void setMaxEntryExpiration(Uint32 value) { + this.maxEntryExpiration = value; + } + + private Uint32 minTempEntryExpiration; + + public Uint32 getMinTempEntryExpiration() { + return this.minTempEntryExpiration; + } + + public void setMinTempEntryExpiration(Uint32 value) { + this.minTempEntryExpiration = value; + } + + private Uint32 minPersistentEntryExpiration; + + public Uint32 getMinPersistentEntryExpiration() { + return this.minPersistentEntryExpiration; + } + + public void setMinPersistentEntryExpiration(Uint32 value) { + this.minPersistentEntryExpiration = value; + } + + private Uint32 autoBumpLedgers; + + public Uint32 getAutoBumpLedgers() { + return this.autoBumpLedgers; + } + + public void setAutoBumpLedgers(Uint32 value) { + this.autoBumpLedgers = value; + } + + private Int64 persistentRentRateDenominator; + + public Int64 getPersistentRentRateDenominator() { + return this.persistentRentRateDenominator; + } + + public void setPersistentRentRateDenominator(Int64 value) { + this.persistentRentRateDenominator = value; + } + + private Int64 tempRentRateDenominator; + + public Int64 getTempRentRateDenominator() { + return this.tempRentRateDenominator; + } + + public void setTempRentRateDenominator(Int64 value) { + this.tempRentRateDenominator = value; + } + + private Uint32 maxEntriesToExpire; + + public Uint32 getMaxEntriesToExpire() { + return this.maxEntriesToExpire; + } + + public void setMaxEntriesToExpire(Uint32 value) { + this.maxEntriesToExpire = value; + } + + private Uint32 bucketListSizeWindowSampleSize; + + public Uint32 getBucketListSizeWindowSampleSize() { + return this.bucketListSizeWindowSampleSize; + } + + public void setBucketListSizeWindowSampleSize(Uint32 value) { + this.bucketListSizeWindowSampleSize = value; + } + + private Uint64 evictionScanSize; + + public Uint64 getEvictionScanSize() { + return this.evictionScanSize; + } + + public void setEvictionScanSize(Uint64 value) { + this.evictionScanSize = value; + } + + public static void encode( + XdrDataOutputStream stream, StateExpirationSettings encodedStateExpirationSettings) + throws IOException { + Uint32.encode(stream, encodedStateExpirationSettings.maxEntryExpiration); + Uint32.encode(stream, encodedStateExpirationSettings.minTempEntryExpiration); + Uint32.encode(stream, encodedStateExpirationSettings.minPersistentEntryExpiration); + Uint32.encode(stream, encodedStateExpirationSettings.autoBumpLedgers); + Int64.encode(stream, encodedStateExpirationSettings.persistentRentRateDenominator); + Int64.encode(stream, encodedStateExpirationSettings.tempRentRateDenominator); + Uint32.encode(stream, encodedStateExpirationSettings.maxEntriesToExpire); + Uint32.encode(stream, encodedStateExpirationSettings.bucketListSizeWindowSampleSize); + Uint64.encode(stream, encodedStateExpirationSettings.evictionScanSize); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static StateExpirationSettings decode(XdrDataInputStream stream) throws IOException { + StateExpirationSettings decodedStateExpirationSettings = new StateExpirationSettings(); + decodedStateExpirationSettings.maxEntryExpiration = Uint32.decode(stream); + decodedStateExpirationSettings.minTempEntryExpiration = Uint32.decode(stream); + decodedStateExpirationSettings.minPersistentEntryExpiration = Uint32.decode(stream); + decodedStateExpirationSettings.autoBumpLedgers = Uint32.decode(stream); + decodedStateExpirationSettings.persistentRentRateDenominator = Int64.decode(stream); + decodedStateExpirationSettings.tempRentRateDenominator = Int64.decode(stream); + decodedStateExpirationSettings.maxEntriesToExpire = Uint32.decode(stream); + decodedStateExpirationSettings.bucketListSizeWindowSampleSize = Uint32.decode(stream); + decodedStateExpirationSettings.evictionScanSize = Uint64.decode(stream); + return decodedStateExpirationSettings; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.maxEntryExpiration, + this.minTempEntryExpiration, + this.minPersistentEntryExpiration, + this.autoBumpLedgers, + this.persistentRentRateDenominator, + this.tempRentRateDenominator, + this.maxEntriesToExpire, + this.bucketListSizeWindowSampleSize, + this.evictionScanSize); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof StateExpirationSettings)) { + return false; + } + + StateExpirationSettings other = (StateExpirationSettings) object; + return Objects.equal(this.maxEntryExpiration, other.maxEntryExpiration) + && Objects.equal(this.minTempEntryExpiration, other.minTempEntryExpiration) + && Objects.equal(this.minPersistentEntryExpiration, other.minPersistentEntryExpiration) + && Objects.equal(this.autoBumpLedgers, other.autoBumpLedgers) + && Objects.equal(this.persistentRentRateDenominator, other.persistentRentRateDenominator) + && Objects.equal(this.tempRentRateDenominator, other.tempRentRateDenominator) + && Objects.equal(this.maxEntriesToExpire, other.maxEntriesToExpire) + && Objects.equal(this.bucketListSizeWindowSampleSize, other.bucketListSizeWindowSampleSize) + && Objects.equal(this.evictionScanSize, other.evictionScanSize); + } + + public static final class Builder { + private Uint32 maxEntryExpiration; + private Uint32 minTempEntryExpiration; + private Uint32 minPersistentEntryExpiration; + private Uint32 autoBumpLedgers; + private Int64 persistentRentRateDenominator; + private Int64 tempRentRateDenominator; + private Uint32 maxEntriesToExpire; + private Uint32 bucketListSizeWindowSampleSize; + private Uint64 evictionScanSize; + + public Builder maxEntryExpiration(Uint32 maxEntryExpiration) { + this.maxEntryExpiration = maxEntryExpiration; + return this; + } + + public Builder minTempEntryExpiration(Uint32 minTempEntryExpiration) { + this.minTempEntryExpiration = minTempEntryExpiration; + return this; + } + + public Builder minPersistentEntryExpiration(Uint32 minPersistentEntryExpiration) { + this.minPersistentEntryExpiration = minPersistentEntryExpiration; + return this; + } + + public Builder autoBumpLedgers(Uint32 autoBumpLedgers) { + this.autoBumpLedgers = autoBumpLedgers; + return this; + } + + public Builder persistentRentRateDenominator(Int64 persistentRentRateDenominator) { + this.persistentRentRateDenominator = persistentRentRateDenominator; + return this; + } + + public Builder tempRentRateDenominator(Int64 tempRentRateDenominator) { + this.tempRentRateDenominator = tempRentRateDenominator; + return this; + } + + public Builder maxEntriesToExpire(Uint32 maxEntriesToExpire) { + this.maxEntriesToExpire = maxEntriesToExpire; + return this; + } + + public Builder bucketListSizeWindowSampleSize(Uint32 bucketListSizeWindowSampleSize) { + this.bucketListSizeWindowSampleSize = bucketListSizeWindowSampleSize; + return this; + } + + public Builder evictionScanSize(Uint64 evictionScanSize) { + this.evictionScanSize = evictionScanSize; + return this; + } + + public StateExpirationSettings build() { + StateExpirationSettings val = new StateExpirationSettings(); + val.setMaxEntryExpiration(this.maxEntryExpiration); + val.setMinTempEntryExpiration(this.minTempEntryExpiration); + val.setMinPersistentEntryExpiration(this.minPersistentEntryExpiration); + val.setAutoBumpLedgers(this.autoBumpLedgers); + val.setPersistentRentRateDenominator(this.persistentRentRateDenominator); + val.setTempRentRateDenominator(this.tempRentRateDenominator); + val.setMaxEntriesToExpire(this.maxEntriesToExpire); + val.setBucketListSizeWindowSampleSize(this.bucketListSizeWindowSampleSize); + val.setEvictionScanSize(this.evictionScanSize); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/StellarMessage.java b/src/main/java/org/stellar/sdk/xdr/StellarMessage.java index 96ee925ce..18500e468 100644 --- a/src/main/java/org/stellar/sdk/xdr/StellarMessage.java +++ b/src/main/java/org/stellar/sdk/xdr/StellarMessage.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -28,6 +30,8 @@ // uint256 txSetHash; // case TX_SET: // TransactionSet txSet; +// case GENERALIZED_TX_SET: +// GeneralizedTransactionSet generalizedTxSet; // // case TRANSACTION: // TransactionEnvelope transaction; @@ -49,6 +53,13 @@ // uint32 getSCPLedgerSeq; // ledger seq requested ; if 0, requests the latest // case SEND_MORE: // SendMore sendMoreMessage; +// case SEND_MORE_EXTENDED: +// SendMoreExtended sendMoreExtendedMessage; +// // Pull mode +// case FLOOD_ADVERT: +// FloodAdvert floodAdvert; +// case FLOOD_DEMAND: +// FloodDemand floodDemand; // }; // =========================================================================== @@ -135,6 +146,16 @@ public void setTxSet(TransactionSet value) { this.txSet = value; } + private GeneralizedTransactionSet generalizedTxSet; + + public GeneralizedTransactionSet getGeneralizedTxSet() { + return this.generalizedTxSet; + } + + public void setGeneralizedTxSet(GeneralizedTransactionSet value) { + this.generalizedTxSet = value; + } + private TransactionEnvelope transaction; public TransactionEnvelope getTransaction() { @@ -215,6 +236,36 @@ public void setSendMoreMessage(SendMore value) { this.sendMoreMessage = value; } + private SendMoreExtended sendMoreExtendedMessage; + + public SendMoreExtended getSendMoreExtendedMessage() { + return this.sendMoreExtendedMessage; + } + + public void setSendMoreExtendedMessage(SendMoreExtended value) { + this.sendMoreExtendedMessage = value; + } + + private FloodAdvert floodAdvert; + + public FloodAdvert getFloodAdvert() { + return this.floodAdvert; + } + + public void setFloodAdvert(FloodAdvert value) { + this.floodAdvert = value; + } + + private FloodDemand floodDemand; + + public FloodDemand getFloodDemand() { + return this.floodDemand; + } + + public void setFloodDemand(FloodDemand value) { + this.floodDemand = value; + } + public static final class Builder { private MessageType discriminant; private Error error; @@ -224,6 +275,7 @@ public static final class Builder { private PeerAddress[] peers; private Uint256 txSetHash; private TransactionSet txSet; + private GeneralizedTransactionSet generalizedTxSet; private TransactionEnvelope transaction; private SignedSurveyRequestMessage signedSurveyRequestMessage; private SignedSurveyResponseMessage signedSurveyResponseMessage; @@ -232,6 +284,9 @@ public static final class Builder { private SCPEnvelope envelope; private Uint32 getSCPLedgerSeq; private SendMore sendMoreMessage; + private SendMoreExtended sendMoreExtendedMessage; + private FloodAdvert floodAdvert; + private FloodDemand floodDemand; public Builder discriminant(MessageType discriminant) { this.discriminant = discriminant; @@ -273,6 +328,11 @@ public Builder txSet(TransactionSet txSet) { return this; } + public Builder generalizedTxSet(GeneralizedTransactionSet generalizedTxSet) { + this.generalizedTxSet = generalizedTxSet; + return this; + } + public Builder transaction(TransactionEnvelope transaction) { this.transaction = transaction; return this; @@ -315,24 +375,43 @@ public Builder sendMoreMessage(SendMore sendMoreMessage) { return this; } + public Builder sendMoreExtendedMessage(SendMoreExtended sendMoreExtendedMessage) { + this.sendMoreExtendedMessage = sendMoreExtendedMessage; + return this; + } + + public Builder floodAdvert(FloodAdvert floodAdvert) { + this.floodAdvert = floodAdvert; + return this; + } + + public Builder floodDemand(FloodDemand floodDemand) { + this.floodDemand = floodDemand; + return this; + } + public StellarMessage build() { StellarMessage val = new StellarMessage(); val.setDiscriminant(discriminant); - val.setError(error); - val.setHello(hello); - val.setAuth(auth); - val.setDontHave(dontHave); - val.setPeers(peers); - val.setTxSetHash(txSetHash); - val.setTxSet(txSet); - val.setTransaction(transaction); - val.setSignedSurveyRequestMessage(signedSurveyRequestMessage); - val.setSignedSurveyResponseMessage(signedSurveyResponseMessage); - val.setQSetHash(qSetHash); - val.setQSet(qSet); - val.setEnvelope(envelope); - val.setGetSCPLedgerSeq(getSCPLedgerSeq); - val.setSendMoreMessage(sendMoreMessage); + val.setError(this.error); + val.setHello(this.hello); + val.setAuth(this.auth); + val.setDontHave(this.dontHave); + val.setPeers(this.peers); + val.setTxSetHash(this.txSetHash); + val.setTxSet(this.txSet); + val.setGeneralizedTxSet(this.generalizedTxSet); + val.setTransaction(this.transaction); + val.setSignedSurveyRequestMessage(this.signedSurveyRequestMessage); + val.setSignedSurveyResponseMessage(this.signedSurveyResponseMessage); + val.setQSetHash(this.qSetHash); + val.setQSet(this.qSet); + val.setEnvelope(this.envelope); + val.setGetSCPLedgerSeq(this.getSCPLedgerSeq); + val.setSendMoreMessage(this.sendMoreMessage); + val.setSendMoreExtendedMessage(this.sendMoreExtendedMessage); + val.setFloodAdvert(this.floodAdvert); + val.setFloodDemand(this.floodDemand); return val; } } @@ -370,6 +449,9 @@ public static void encode(XdrDataOutputStream stream, StellarMessage encodedStel case TX_SET: TransactionSet.encode(stream, encodedStellarMessage.txSet); break; + case GENERALIZED_TX_SET: + GeneralizedTransactionSet.encode(stream, encodedStellarMessage.generalizedTxSet); + break; case TRANSACTION: TransactionEnvelope.encode(stream, encodedStellarMessage.transaction); break; @@ -395,6 +477,15 @@ public static void encode(XdrDataOutputStream stream, StellarMessage encodedStel case SEND_MORE: SendMore.encode(stream, encodedStellarMessage.sendMoreMessage); break; + case SEND_MORE_EXTENDED: + SendMoreExtended.encode(stream, encodedStellarMessage.sendMoreExtendedMessage); + break; + case FLOOD_ADVERT: + FloodAdvert.encode(stream, encodedStellarMessage.floodAdvert); + break; + case FLOOD_DEMAND: + FloodDemand.encode(stream, encodedStellarMessage.floodDemand); + break; } } @@ -434,6 +525,9 @@ public static StellarMessage decode(XdrDataInputStream stream) throws IOExceptio case TX_SET: decodedStellarMessage.txSet = TransactionSet.decode(stream); break; + case GENERALIZED_TX_SET: + decodedStellarMessage.generalizedTxSet = GeneralizedTransactionSet.decode(stream); + break; case TRANSACTION: decodedStellarMessage.transaction = TransactionEnvelope.decode(stream); break; @@ -460,6 +554,15 @@ public static StellarMessage decode(XdrDataInputStream stream) throws IOExceptio case SEND_MORE: decodedStellarMessage.sendMoreMessage = SendMore.decode(stream); break; + case SEND_MORE_EXTENDED: + decodedStellarMessage.sendMoreExtendedMessage = SendMoreExtended.decode(stream); + break; + case FLOOD_ADVERT: + decodedStellarMessage.floodAdvert = FloodAdvert.decode(stream); + break; + case FLOOD_DEMAND: + decodedStellarMessage.floodDemand = FloodDemand.decode(stream); + break; } return decodedStellarMessage; } @@ -474,6 +577,7 @@ public int hashCode() { Arrays.hashCode(this.peers), this.txSetHash, this.txSet, + this.generalizedTxSet, this.transaction, this.signedSurveyRequestMessage, this.signedSurveyResponseMessage, @@ -482,6 +586,9 @@ public int hashCode() { this.envelope, this.getSCPLedgerSeq, this.sendMoreMessage, + this.sendMoreExtendedMessage, + this.floodAdvert, + this.floodDemand, this.type); } @@ -499,6 +606,7 @@ public boolean equals(Object object) { && Arrays.equals(this.peers, other.peers) && Objects.equal(this.txSetHash, other.txSetHash) && Objects.equal(this.txSet, other.txSet) + && Objects.equal(this.generalizedTxSet, other.generalizedTxSet) && Objects.equal(this.transaction, other.transaction) && Objects.equal(this.signedSurveyRequestMessage, other.signedSurveyRequestMessage) && Objects.equal(this.signedSurveyResponseMessage, other.signedSurveyResponseMessage) @@ -507,6 +615,9 @@ public boolean equals(Object object) { && Objects.equal(this.envelope, other.envelope) && Objects.equal(this.getSCPLedgerSeq, other.getSCPLedgerSeq) && Objects.equal(this.sendMoreMessage, other.sendMoreMessage) + && Objects.equal(this.sendMoreExtendedMessage, other.sendMoreExtendedMessage) + && Objects.equal(this.floodAdvert, other.floodAdvert) + && Objects.equal(this.floodDemand, other.floodDemand) && Objects.equal(this.type, other.type); } } diff --git a/src/main/java/org/stellar/sdk/xdr/StellarValue.java b/src/main/java/org/stellar/sdk/xdr/StellarValue.java index 77a4fac62..38f0cec12 100644 --- a/src/main/java/org/stellar/sdk/xdr/StellarValue.java +++ b/src/main/java/org/stellar/sdk/xdr/StellarValue.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -152,10 +154,10 @@ public Builder ext(StellarValueExt ext) { public StellarValue build() { StellarValue val = new StellarValue(); - val.setTxSetHash(txSetHash); - val.setCloseTime(closeTime); - val.setUpgrades(upgrades); - val.setExt(ext); + val.setTxSetHash(this.txSetHash); + val.setCloseTime(this.closeTime); + val.setUpgrades(this.upgrades); + val.setExt(this.ext); return val; } } @@ -200,7 +202,7 @@ public Builder lcValueSignature(LedgerCloseValueSignature lcValueSignature) { public StellarValueExt build() { StellarValueExt val = new StellarValueExt(); val.setDiscriminant(discriminant); - val.setLcValueSignature(lcValueSignature); + val.setLcValueSignature(this.lcValueSignature); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/StellarValueType.java b/src/main/java/org/stellar/sdk/xdr/StellarValueType.java index 9d8caa640..912103727 100644 --- a/src/main/java/org/stellar/sdk/xdr/StellarValueType.java +++ b/src/main/java/org/stellar/sdk/xdr/StellarValueType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/StoredTransactionSet.java b/src/main/java/org/stellar/sdk/xdr/StoredTransactionSet.java new file mode 100644 index 000000000..f9e41f8df --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/StoredTransactionSet.java @@ -0,0 +1,135 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// union StoredTransactionSet switch (int v) +// { +// case 0: +// TransactionSet txSet; +// case 1: +// GeneralizedTransactionSet generalizedTxSet; +// }; + +// =========================================================================== +public class StoredTransactionSet implements XdrElement { + public StoredTransactionSet() {} + + Integer v; + + public Integer getDiscriminant() { + return this.v; + } + + public void setDiscriminant(Integer value) { + this.v = value; + } + + private TransactionSet txSet; + + public TransactionSet getTxSet() { + return this.txSet; + } + + public void setTxSet(TransactionSet value) { + this.txSet = value; + } + + private GeneralizedTransactionSet generalizedTxSet; + + public GeneralizedTransactionSet getGeneralizedTxSet() { + return this.generalizedTxSet; + } + + public void setGeneralizedTxSet(GeneralizedTransactionSet value) { + this.generalizedTxSet = value; + } + + public static final class Builder { + private Integer discriminant; + private TransactionSet txSet; + private GeneralizedTransactionSet generalizedTxSet; + + public Builder discriminant(Integer discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder txSet(TransactionSet txSet) { + this.txSet = txSet; + return this; + } + + public Builder generalizedTxSet(GeneralizedTransactionSet generalizedTxSet) { + this.generalizedTxSet = generalizedTxSet; + return this; + } + + public StoredTransactionSet build() { + StoredTransactionSet val = new StoredTransactionSet(); + val.setDiscriminant(discriminant); + val.setTxSet(this.txSet); + val.setGeneralizedTxSet(this.generalizedTxSet); + return val; + } + } + + public static void encode( + XdrDataOutputStream stream, StoredTransactionSet encodedStoredTransactionSet) + throws IOException { + // Xdrgen::AST::Typespecs::Int + // Integer + stream.writeInt(encodedStoredTransactionSet.getDiscriminant().intValue()); + switch (encodedStoredTransactionSet.getDiscriminant()) { + case 0: + TransactionSet.encode(stream, encodedStoredTransactionSet.txSet); + break; + case 1: + GeneralizedTransactionSet.encode(stream, encodedStoredTransactionSet.generalizedTxSet); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static StoredTransactionSet decode(XdrDataInputStream stream) throws IOException { + StoredTransactionSet decodedStoredTransactionSet = new StoredTransactionSet(); + Integer discriminant = stream.readInt(); + decodedStoredTransactionSet.setDiscriminant(discriminant); + switch (decodedStoredTransactionSet.getDiscriminant()) { + case 0: + decodedStoredTransactionSet.txSet = TransactionSet.decode(stream); + break; + case 1: + decodedStoredTransactionSet.generalizedTxSet = GeneralizedTransactionSet.decode(stream); + break; + } + return decodedStoredTransactionSet; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.txSet, this.generalizedTxSet, this.v); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof StoredTransactionSet)) { + return false; + } + + StoredTransactionSet other = (StoredTransactionSet) object; + return Objects.equal(this.txSet, other.txSet) + && Objects.equal(this.generalizedTxSet, other.generalizedTxSet) + && Objects.equal(this.v, other.v); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/String32.java b/src/main/java/org/stellar/sdk/xdr/String32.java index 3893aa20d..1f130b881 100644 --- a/src/main/java/org/stellar/sdk/xdr/String32.java +++ b/src/main/java/org/stellar/sdk/xdr/String32.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; diff --git a/src/main/java/org/stellar/sdk/xdr/String64.java b/src/main/java/org/stellar/sdk/xdr/String64.java index 8d060d124..cb3ea069f 100644 --- a/src/main/java/org/stellar/sdk/xdr/String64.java +++ b/src/main/java/org/stellar/sdk/xdr/String64.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; diff --git a/src/main/java/org/stellar/sdk/xdr/SurveyMessageCommandType.java b/src/main/java/org/stellar/sdk/xdr/SurveyMessageCommandType.java index f8772f675..0c2b0ed1b 100644 --- a/src/main/java/org/stellar/sdk/xdr/SurveyMessageCommandType.java +++ b/src/main/java/org/stellar/sdk/xdr/SurveyMessageCommandType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/SurveyMessageResponseType.java b/src/main/java/org/stellar/sdk/xdr/SurveyMessageResponseType.java new file mode 100644 index 000000000..77b2d423d --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/SurveyMessageResponseType.java @@ -0,0 +1,53 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum SurveyMessageResponseType +// { +// SURVEY_TOPOLOGY_RESPONSE_V0 = 0, +// SURVEY_TOPOLOGY_RESPONSE_V1 = 1 +// }; + +// =========================================================================== +public enum SurveyMessageResponseType implements XdrElement { + SURVEY_TOPOLOGY_RESPONSE_V0(0), + SURVEY_TOPOLOGY_RESPONSE_V1(1), + ; + private int mValue; + + SurveyMessageResponseType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static SurveyMessageResponseType decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return SURVEY_TOPOLOGY_RESPONSE_V0; + case 1: + return SURVEY_TOPOLOGY_RESPONSE_V1; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, SurveyMessageResponseType value) + throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/SurveyRequestMessage.java b/src/main/java/org/stellar/sdk/xdr/SurveyRequestMessage.java index b9c8e6d58..6aa03b9dd 100644 --- a/src/main/java/org/stellar/sdk/xdr/SurveyRequestMessage.java +++ b/src/main/java/org/stellar/sdk/xdr/SurveyRequestMessage.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -153,11 +155,11 @@ public Builder commandType(SurveyMessageCommandType commandType) { public SurveyRequestMessage build() { SurveyRequestMessage val = new SurveyRequestMessage(); - val.setSurveyorPeerID(surveyorPeerID); - val.setSurveyedPeerID(surveyedPeerID); - val.setLedgerNum(ledgerNum); - val.setEncryptionKey(encryptionKey); - val.setCommandType(commandType); + val.setSurveyorPeerID(this.surveyorPeerID); + val.setSurveyedPeerID(this.surveyedPeerID); + val.setLedgerNum(this.ledgerNum); + val.setEncryptionKey(this.encryptionKey); + val.setCommandType(this.commandType); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/SurveyResponseBody.java b/src/main/java/org/stellar/sdk/xdr/SurveyResponseBody.java index d4d765764..6bbe9e508 100644 --- a/src/main/java/org/stellar/sdk/xdr/SurveyResponseBody.java +++ b/src/main/java/org/stellar/sdk/xdr/SurveyResponseBody.java @@ -3,59 +3,80 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; // === xdr source ============================================================ -// union SurveyResponseBody switch (SurveyMessageCommandType type) +// union SurveyResponseBody switch (SurveyMessageResponseType type) // { -// case SURVEY_TOPOLOGY: -// TopologyResponseBody topologyResponseBody; +// case SURVEY_TOPOLOGY_RESPONSE_V0: +// TopologyResponseBodyV0 topologyResponseBodyV0; +// case SURVEY_TOPOLOGY_RESPONSE_V1: +// TopologyResponseBodyV1 topologyResponseBodyV1; // }; // =========================================================================== public class SurveyResponseBody implements XdrElement { public SurveyResponseBody() {} - SurveyMessageCommandType type; + SurveyMessageResponseType type; - public SurveyMessageCommandType getDiscriminant() { + public SurveyMessageResponseType getDiscriminant() { return this.type; } - public void setDiscriminant(SurveyMessageCommandType value) { + public void setDiscriminant(SurveyMessageResponseType value) { this.type = value; } - private TopologyResponseBody topologyResponseBody; + private TopologyResponseBodyV0 topologyResponseBodyV0; + + public TopologyResponseBodyV0 getTopologyResponseBodyV0() { + return this.topologyResponseBodyV0; + } + + public void setTopologyResponseBodyV0(TopologyResponseBodyV0 value) { + this.topologyResponseBodyV0 = value; + } + + private TopologyResponseBodyV1 topologyResponseBodyV1; - public TopologyResponseBody getTopologyResponseBody() { - return this.topologyResponseBody; + public TopologyResponseBodyV1 getTopologyResponseBodyV1() { + return this.topologyResponseBodyV1; } - public void setTopologyResponseBody(TopologyResponseBody value) { - this.topologyResponseBody = value; + public void setTopologyResponseBodyV1(TopologyResponseBodyV1 value) { + this.topologyResponseBodyV1 = value; } public static final class Builder { - private SurveyMessageCommandType discriminant; - private TopologyResponseBody topologyResponseBody; + private SurveyMessageResponseType discriminant; + private TopologyResponseBodyV0 topologyResponseBodyV0; + private TopologyResponseBodyV1 topologyResponseBodyV1; - public Builder discriminant(SurveyMessageCommandType discriminant) { + public Builder discriminant(SurveyMessageResponseType discriminant) { this.discriminant = discriminant; return this; } - public Builder topologyResponseBody(TopologyResponseBody topologyResponseBody) { - this.topologyResponseBody = topologyResponseBody; + public Builder topologyResponseBodyV0(TopologyResponseBodyV0 topologyResponseBodyV0) { + this.topologyResponseBodyV0 = topologyResponseBodyV0; + return this; + } + + public Builder topologyResponseBodyV1(TopologyResponseBodyV1 topologyResponseBodyV1) { + this.topologyResponseBodyV1 = topologyResponseBodyV1; return this; } public SurveyResponseBody build() { SurveyResponseBody val = new SurveyResponseBody(); val.setDiscriminant(discriminant); - val.setTopologyResponseBody(topologyResponseBody); + val.setTopologyResponseBodyV0(this.topologyResponseBodyV0); + val.setTopologyResponseBodyV1(this.topologyResponseBodyV1); return val; } } @@ -63,11 +84,14 @@ public SurveyResponseBody build() { public static void encode( XdrDataOutputStream stream, SurveyResponseBody encodedSurveyResponseBody) throws IOException { // Xdrgen::AST::Identifier - // SurveyMessageCommandType + // SurveyMessageResponseType stream.writeInt(encodedSurveyResponseBody.getDiscriminant().getValue()); switch (encodedSurveyResponseBody.getDiscriminant()) { - case SURVEY_TOPOLOGY: - TopologyResponseBody.encode(stream, encodedSurveyResponseBody.topologyResponseBody); + case SURVEY_TOPOLOGY_RESPONSE_V0: + TopologyResponseBodyV0.encode(stream, encodedSurveyResponseBody.topologyResponseBodyV0); + break; + case SURVEY_TOPOLOGY_RESPONSE_V1: + TopologyResponseBodyV1.encode(stream, encodedSurveyResponseBody.topologyResponseBodyV1); break; } } @@ -78,11 +102,14 @@ public void encode(XdrDataOutputStream stream) throws IOException { public static SurveyResponseBody decode(XdrDataInputStream stream) throws IOException { SurveyResponseBody decodedSurveyResponseBody = new SurveyResponseBody(); - SurveyMessageCommandType discriminant = SurveyMessageCommandType.decode(stream); + SurveyMessageResponseType discriminant = SurveyMessageResponseType.decode(stream); decodedSurveyResponseBody.setDiscriminant(discriminant); switch (decodedSurveyResponseBody.getDiscriminant()) { - case SURVEY_TOPOLOGY: - decodedSurveyResponseBody.topologyResponseBody = TopologyResponseBody.decode(stream); + case SURVEY_TOPOLOGY_RESPONSE_V0: + decodedSurveyResponseBody.topologyResponseBodyV0 = TopologyResponseBodyV0.decode(stream); + break; + case SURVEY_TOPOLOGY_RESPONSE_V1: + decodedSurveyResponseBody.topologyResponseBodyV1 = TopologyResponseBodyV1.decode(stream); break; } return decodedSurveyResponseBody; @@ -90,7 +117,7 @@ public static SurveyResponseBody decode(XdrDataInputStream stream) throws IOExce @Override public int hashCode() { - return Objects.hashCode(this.topologyResponseBody, this.type); + return Objects.hashCode(this.topologyResponseBodyV0, this.topologyResponseBodyV1, this.type); } @Override @@ -100,7 +127,8 @@ public boolean equals(Object object) { } SurveyResponseBody other = (SurveyResponseBody) object; - return Objects.equal(this.topologyResponseBody, other.topologyResponseBody) + return Objects.equal(this.topologyResponseBodyV0, other.topologyResponseBodyV0) + && Objects.equal(this.topologyResponseBodyV1, other.topologyResponseBodyV1) && Objects.equal(this.type, other.type); } } diff --git a/src/main/java/org/stellar/sdk/xdr/SurveyResponseMessage.java b/src/main/java/org/stellar/sdk/xdr/SurveyResponseMessage.java index e118c84fc..e806f88a3 100644 --- a/src/main/java/org/stellar/sdk/xdr/SurveyResponseMessage.java +++ b/src/main/java/org/stellar/sdk/xdr/SurveyResponseMessage.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -153,11 +155,11 @@ public Builder encryptedBody(EncryptedBody encryptedBody) { public SurveyResponseMessage build() { SurveyResponseMessage val = new SurveyResponseMessage(); - val.setSurveyorPeerID(surveyorPeerID); - val.setSurveyedPeerID(surveyedPeerID); - val.setLedgerNum(ledgerNum); - val.setCommandType(commandType); - val.setEncryptedBody(encryptedBody); + val.setSurveyorPeerID(this.surveyorPeerID); + val.setSurveyedPeerID(this.surveyedPeerID); + val.setLedgerNum(this.ledgerNum); + val.setCommandType(this.commandType); + val.setEncryptedBody(this.encryptedBody); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/ThresholdIndexes.java b/src/main/java/org/stellar/sdk/xdr/ThresholdIndexes.java index c85d2cfae..a67d5c1eb 100644 --- a/src/main/java/org/stellar/sdk/xdr/ThresholdIndexes.java +++ b/src/main/java/org/stellar/sdk/xdr/ThresholdIndexes.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/ThresholdIndices.java b/src/main/java/org/stellar/sdk/xdr/ThresholdIndices.java deleted file mode 100644 index 1ef43b166..000000000 --- a/src/main/java/org/stellar/sdk/xdr/ThresholdIndices.java +++ /dev/null @@ -1,54 +0,0 @@ -// Automatically generated on 2015-11-05T11:21:06-08:00 -// DO NOT EDIT or your changes may be overwritten - -package org.stellar.sdk.xdr; - -import java.io.IOException; - -// === xdr source ============================================================ - -// enum ThresholdIndexes -// { -// THRESHOLD_MASTER_WEIGHT = 0, -// THRESHOLD_LOW = 1, -// THRESHOLD_MED = 2, -// THRESHOLD_HIGH = 3 -// }; - -// =========================================================================== -public enum ThresholdIndices { - THRESHOLD_MASTER_WEIGHT(0), - THRESHOLD_LOW(1), - THRESHOLD_MED(2), - THRESHOLD_HIGH(3), - ; - private int mValue; - - ThresholdIndices(int value) { - mValue = value; - } - - public int getValue() { - return mValue; - } - - static ThresholdIndices decode(XdrDataInputStream stream) throws IOException { - int value = stream.readInt(); - switch (value) { - case 0: - return THRESHOLD_MASTER_WEIGHT; - case 1: - return THRESHOLD_LOW; - case 2: - return THRESHOLD_MED; - case 3: - return THRESHOLD_HIGH; - default: - throw new RuntimeException("Unknown enum value: " + value); - } - } - - static void encode(XdrDataOutputStream stream, ThresholdIndices value) throws IOException { - stream.writeInt(value.getValue()); - } -} diff --git a/src/main/java/org/stellar/sdk/xdr/Thresholds.java b/src/main/java/org/stellar/sdk/xdr/Thresholds.java index 7da4111ba..bea371c22 100644 --- a/src/main/java/org/stellar/sdk/xdr/Thresholds.java +++ b/src/main/java/org/stellar/sdk/xdr/Thresholds.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/org/stellar/sdk/xdr/TimeBounds.java b/src/main/java/org/stellar/sdk/xdr/TimeBounds.java index c1ef69520..4d94d37ce 100644 --- a/src/main/java/org/stellar/sdk/xdr/TimeBounds.java +++ b/src/main/java/org/stellar/sdk/xdr/TimeBounds.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -86,8 +88,8 @@ public Builder maxTime(TimePoint maxTime) { public TimeBounds build() { TimeBounds val = new TimeBounds(); - val.setMinTime(minTime); - val.setMaxTime(maxTime); + val.setMinTime(this.minTime); + val.setMaxTime(this.maxTime); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TimePoint.java b/src/main/java/org/stellar/sdk/xdr/TimePoint.java index 0caede008..e80c7170b 100644 --- a/src/main/java/org/stellar/sdk/xdr/TimePoint.java +++ b/src/main/java/org/stellar/sdk/xdr/TimePoint.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; diff --git a/src/main/java/org/stellar/sdk/xdr/TopologyResponseBody.java b/src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV0.java similarity index 65% rename from src/main/java/org/stellar/sdk/xdr/TopologyResponseBody.java rename to src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV0.java index 3d0513145..0bbd9f6b9 100644 --- a/src/main/java/org/stellar/sdk/xdr/TopologyResponseBody.java +++ b/src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV0.java @@ -3,12 +3,14 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; // === xdr source ============================================================ -// struct TopologyResponseBody +// struct TopologyResponseBodyV0 // { // PeerStatList inboundPeers; // PeerStatList outboundPeers; @@ -18,8 +20,8 @@ // }; // =========================================================================== -public class TopologyResponseBody implements XdrElement { - public TopologyResponseBody() {} +public class TopologyResponseBodyV0 implements XdrElement { + public TopologyResponseBodyV0() {} private PeerStatList inboundPeers; @@ -62,25 +64,25 @@ public void setTotalOutboundPeerCount(Uint32 value) { } public static void encode( - XdrDataOutputStream stream, TopologyResponseBody encodedTopologyResponseBody) + XdrDataOutputStream stream, TopologyResponseBodyV0 encodedTopologyResponseBodyV0) throws IOException { - PeerStatList.encode(stream, encodedTopologyResponseBody.inboundPeers); - PeerStatList.encode(stream, encodedTopologyResponseBody.outboundPeers); - Uint32.encode(stream, encodedTopologyResponseBody.totalInboundPeerCount); - Uint32.encode(stream, encodedTopologyResponseBody.totalOutboundPeerCount); + PeerStatList.encode(stream, encodedTopologyResponseBodyV0.inboundPeers); + PeerStatList.encode(stream, encodedTopologyResponseBodyV0.outboundPeers); + Uint32.encode(stream, encodedTopologyResponseBodyV0.totalInboundPeerCount); + Uint32.encode(stream, encodedTopologyResponseBodyV0.totalOutboundPeerCount); } public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } - public static TopologyResponseBody decode(XdrDataInputStream stream) throws IOException { - TopologyResponseBody decodedTopologyResponseBody = new TopologyResponseBody(); - decodedTopologyResponseBody.inboundPeers = PeerStatList.decode(stream); - decodedTopologyResponseBody.outboundPeers = PeerStatList.decode(stream); - decodedTopologyResponseBody.totalInboundPeerCount = Uint32.decode(stream); - decodedTopologyResponseBody.totalOutboundPeerCount = Uint32.decode(stream); - return decodedTopologyResponseBody; + public static TopologyResponseBodyV0 decode(XdrDataInputStream stream) throws IOException { + TopologyResponseBodyV0 decodedTopologyResponseBodyV0 = new TopologyResponseBodyV0(); + decodedTopologyResponseBodyV0.inboundPeers = PeerStatList.decode(stream); + decodedTopologyResponseBodyV0.outboundPeers = PeerStatList.decode(stream); + decodedTopologyResponseBodyV0.totalInboundPeerCount = Uint32.decode(stream); + decodedTopologyResponseBodyV0.totalOutboundPeerCount = Uint32.decode(stream); + return decodedTopologyResponseBodyV0; } @Override @@ -94,11 +96,11 @@ public int hashCode() { @Override public boolean equals(Object object) { - if (!(object instanceof TopologyResponseBody)) { + if (!(object instanceof TopologyResponseBodyV0)) { return false; } - TopologyResponseBody other = (TopologyResponseBody) object; + TopologyResponseBodyV0 other = (TopologyResponseBodyV0) object; return Objects.equal(this.inboundPeers, other.inboundPeers) && Objects.equal(this.outboundPeers, other.outboundPeers) && Objects.equal(this.totalInboundPeerCount, other.totalInboundPeerCount) @@ -131,12 +133,12 @@ public Builder totalOutboundPeerCount(Uint32 totalOutboundPeerCount) { return this; } - public TopologyResponseBody build() { - TopologyResponseBody val = new TopologyResponseBody(); - val.setInboundPeers(inboundPeers); - val.setOutboundPeers(outboundPeers); - val.setTotalInboundPeerCount(totalInboundPeerCount); - val.setTotalOutboundPeerCount(totalOutboundPeerCount); + public TopologyResponseBodyV0 build() { + TopologyResponseBodyV0 val = new TopologyResponseBodyV0(); + val.setInboundPeers(this.inboundPeers); + val.setOutboundPeers(this.outboundPeers); + val.setTotalInboundPeerCount(this.totalInboundPeerCount); + val.setTotalOutboundPeerCount(this.totalOutboundPeerCount); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV1.java b/src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV1.java new file mode 100644 index 000000000..874a309c0 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV1.java @@ -0,0 +1,190 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct TopologyResponseBodyV1 +// { +// PeerStatList inboundPeers; +// PeerStatList outboundPeers; +// +// uint32 totalInboundPeerCount; +// uint32 totalOutboundPeerCount; +// +// uint32 maxInboundPeerCount; +// uint32 maxOutboundPeerCount; +// }; + +// =========================================================================== +public class TopologyResponseBodyV1 implements XdrElement { + public TopologyResponseBodyV1() {} + + private PeerStatList inboundPeers; + + public PeerStatList getInboundPeers() { + return this.inboundPeers; + } + + public void setInboundPeers(PeerStatList value) { + this.inboundPeers = value; + } + + private PeerStatList outboundPeers; + + public PeerStatList getOutboundPeers() { + return this.outboundPeers; + } + + public void setOutboundPeers(PeerStatList value) { + this.outboundPeers = value; + } + + private Uint32 totalInboundPeerCount; + + public Uint32 getTotalInboundPeerCount() { + return this.totalInboundPeerCount; + } + + public void setTotalInboundPeerCount(Uint32 value) { + this.totalInboundPeerCount = value; + } + + private Uint32 totalOutboundPeerCount; + + public Uint32 getTotalOutboundPeerCount() { + return this.totalOutboundPeerCount; + } + + public void setTotalOutboundPeerCount(Uint32 value) { + this.totalOutboundPeerCount = value; + } + + private Uint32 maxInboundPeerCount; + + public Uint32 getMaxInboundPeerCount() { + return this.maxInboundPeerCount; + } + + public void setMaxInboundPeerCount(Uint32 value) { + this.maxInboundPeerCount = value; + } + + private Uint32 maxOutboundPeerCount; + + public Uint32 getMaxOutboundPeerCount() { + return this.maxOutboundPeerCount; + } + + public void setMaxOutboundPeerCount(Uint32 value) { + this.maxOutboundPeerCount = value; + } + + public static void encode( + XdrDataOutputStream stream, TopologyResponseBodyV1 encodedTopologyResponseBodyV1) + throws IOException { + PeerStatList.encode(stream, encodedTopologyResponseBodyV1.inboundPeers); + PeerStatList.encode(stream, encodedTopologyResponseBodyV1.outboundPeers); + Uint32.encode(stream, encodedTopologyResponseBodyV1.totalInboundPeerCount); + Uint32.encode(stream, encodedTopologyResponseBodyV1.totalOutboundPeerCount); + Uint32.encode(stream, encodedTopologyResponseBodyV1.maxInboundPeerCount); + Uint32.encode(stream, encodedTopologyResponseBodyV1.maxOutboundPeerCount); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static TopologyResponseBodyV1 decode(XdrDataInputStream stream) throws IOException { + TopologyResponseBodyV1 decodedTopologyResponseBodyV1 = new TopologyResponseBodyV1(); + decodedTopologyResponseBodyV1.inboundPeers = PeerStatList.decode(stream); + decodedTopologyResponseBodyV1.outboundPeers = PeerStatList.decode(stream); + decodedTopologyResponseBodyV1.totalInboundPeerCount = Uint32.decode(stream); + decodedTopologyResponseBodyV1.totalOutboundPeerCount = Uint32.decode(stream); + decodedTopologyResponseBodyV1.maxInboundPeerCount = Uint32.decode(stream); + decodedTopologyResponseBodyV1.maxOutboundPeerCount = Uint32.decode(stream); + return decodedTopologyResponseBodyV1; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.inboundPeers, + this.outboundPeers, + this.totalInboundPeerCount, + this.totalOutboundPeerCount, + this.maxInboundPeerCount, + this.maxOutboundPeerCount); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof TopologyResponseBodyV1)) { + return false; + } + + TopologyResponseBodyV1 other = (TopologyResponseBodyV1) object; + return Objects.equal(this.inboundPeers, other.inboundPeers) + && Objects.equal(this.outboundPeers, other.outboundPeers) + && Objects.equal(this.totalInboundPeerCount, other.totalInboundPeerCount) + && Objects.equal(this.totalOutboundPeerCount, other.totalOutboundPeerCount) + && Objects.equal(this.maxInboundPeerCount, other.maxInboundPeerCount) + && Objects.equal(this.maxOutboundPeerCount, other.maxOutboundPeerCount); + } + + public static final class Builder { + private PeerStatList inboundPeers; + private PeerStatList outboundPeers; + private Uint32 totalInboundPeerCount; + private Uint32 totalOutboundPeerCount; + private Uint32 maxInboundPeerCount; + private Uint32 maxOutboundPeerCount; + + public Builder inboundPeers(PeerStatList inboundPeers) { + this.inboundPeers = inboundPeers; + return this; + } + + public Builder outboundPeers(PeerStatList outboundPeers) { + this.outboundPeers = outboundPeers; + return this; + } + + public Builder totalInboundPeerCount(Uint32 totalInboundPeerCount) { + this.totalInboundPeerCount = totalInboundPeerCount; + return this; + } + + public Builder totalOutboundPeerCount(Uint32 totalOutboundPeerCount) { + this.totalOutboundPeerCount = totalOutboundPeerCount; + return this; + } + + public Builder maxInboundPeerCount(Uint32 maxInboundPeerCount) { + this.maxInboundPeerCount = maxInboundPeerCount; + return this; + } + + public Builder maxOutboundPeerCount(Uint32 maxOutboundPeerCount) { + this.maxOutboundPeerCount = maxOutboundPeerCount; + return this; + } + + public TopologyResponseBodyV1 build() { + TopologyResponseBodyV1 val = new TopologyResponseBodyV1(); + val.setInboundPeers(this.inboundPeers); + val.setOutboundPeers(this.outboundPeers); + val.setTotalInboundPeerCount(this.totalInboundPeerCount); + val.setTotalOutboundPeerCount(this.totalOutboundPeerCount); + val.setMaxInboundPeerCount(this.maxInboundPeerCount); + val.setMaxOutboundPeerCount(this.maxOutboundPeerCount); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/Transaction.java b/src/main/java/org/stellar/sdk/xdr/Transaction.java index ae317f601..1fb66aaf5 100644 --- a/src/main/java/org/stellar/sdk/xdr/Transaction.java +++ b/src/main/java/org/stellar/sdk/xdr/Transaction.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -32,6 +34,8 @@ // { // case 0: // void; +// case 1: +// SorobanTransactionData sorobanData; // } // ext; // }; @@ -219,13 +223,13 @@ public Builder ext(TransactionExt ext) { public Transaction build() { Transaction val = new Transaction(); - val.setSourceAccount(sourceAccount); - val.setFee(fee); - val.setSeqNum(seqNum); - val.setCond(cond); - val.setMemo(memo); - val.setOperations(operations); - val.setExt(ext); + val.setSourceAccount(this.sourceAccount); + val.setFee(this.fee); + val.setSeqNum(this.seqNum); + val.setCond(this.cond); + val.setMemo(this.memo); + val.setOperations(this.operations); + val.setExt(this.ext); return val; } } @@ -243,17 +247,34 @@ public void setDiscriminant(Integer value) { this.v = value; } + private SorobanTransactionData sorobanData; + + public SorobanTransactionData getSorobanData() { + return this.sorobanData; + } + + public void setSorobanData(SorobanTransactionData value) { + this.sorobanData = value; + } + public static final class Builder { private Integer discriminant; + private SorobanTransactionData sorobanData; public Builder discriminant(Integer discriminant) { this.discriminant = discriminant; return this; } + public Builder sorobanData(SorobanTransactionData sorobanData) { + this.sorobanData = sorobanData; + return this; + } + public TransactionExt build() { TransactionExt val = new TransactionExt(); val.setDiscriminant(discriminant); + val.setSorobanData(this.sorobanData); return val; } } @@ -266,6 +287,9 @@ public static void encode(XdrDataOutputStream stream, TransactionExt encodedTran switch (encodedTransactionExt.getDiscriminant()) { case 0: break; + case 1: + SorobanTransactionData.encode(stream, encodedTransactionExt.sorobanData); + break; } } @@ -280,13 +304,16 @@ public static TransactionExt decode(XdrDataInputStream stream) throws IOExceptio switch (decodedTransactionExt.getDiscriminant()) { case 0: break; + case 1: + decodedTransactionExt.sorobanData = SorobanTransactionData.decode(stream); + break; } return decodedTransactionExt; } @Override public int hashCode() { - return Objects.hashCode(this.v); + return Objects.hashCode(this.sorobanData, this.v); } @Override @@ -296,7 +323,7 @@ public boolean equals(Object object) { } TransactionExt other = (TransactionExt) object; - return Objects.equal(this.v, other.v); + return Objects.equal(this.sorobanData, other.sorobanData) && Objects.equal(this.v, other.v); } } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionEnvelope.java b/src/main/java/org/stellar/sdk/xdr/TransactionEnvelope.java index 159b5739b..4befb76cd 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionEnvelope.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionEnvelope.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -91,9 +93,9 @@ public Builder feeBump(FeeBumpTransactionEnvelope feeBump) { public TransactionEnvelope build() { TransactionEnvelope val = new TransactionEnvelope(); val.setDiscriminant(discriminant); - val.setV0(v0); - val.setV1(v1); - val.setFeeBump(feeBump); + val.setV0(this.v0); + val.setV1(this.v1); + val.setFeeBump(this.feeBump); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionHistoryEntry.java b/src/main/java/org/stellar/sdk/xdr/TransactionHistoryEntry.java index 661059741..a5f59ede7 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionHistoryEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionHistoryEntry.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -13,11 +15,13 @@ // uint32 ledgerSeq; // TransactionSet txSet; // -// // reserved for future use +// // when v != 0, txSet must be empty // union switch (int v) // { // case 0: // void; +// case 1: +// GeneralizedTransactionSet generalizedTxSet; // } // ext; // }; @@ -115,9 +119,9 @@ public Builder ext(TransactionHistoryEntryExt ext) { public TransactionHistoryEntry build() { TransactionHistoryEntry val = new TransactionHistoryEntry(); - val.setLedgerSeq(ledgerSeq); - val.setTxSet(txSet); - val.setExt(ext); + val.setLedgerSeq(this.ledgerSeq); + val.setTxSet(this.txSet); + val.setExt(this.ext); return val; } } @@ -135,17 +139,34 @@ public void setDiscriminant(Integer value) { this.v = value; } + private GeneralizedTransactionSet generalizedTxSet; + + public GeneralizedTransactionSet getGeneralizedTxSet() { + return this.generalizedTxSet; + } + + public void setGeneralizedTxSet(GeneralizedTransactionSet value) { + this.generalizedTxSet = value; + } + public static final class Builder { private Integer discriminant; + private GeneralizedTransactionSet generalizedTxSet; public Builder discriminant(Integer discriminant) { this.discriminant = discriminant; return this; } + public Builder generalizedTxSet(GeneralizedTransactionSet generalizedTxSet) { + this.generalizedTxSet = generalizedTxSet; + return this; + } + public TransactionHistoryEntryExt build() { TransactionHistoryEntryExt val = new TransactionHistoryEntryExt(); val.setDiscriminant(discriminant); + val.setGeneralizedTxSet(this.generalizedTxSet); return val; } } @@ -159,6 +180,10 @@ public static void encode( switch (encodedTransactionHistoryEntryExt.getDiscriminant()) { case 0: break; + case 1: + GeneralizedTransactionSet.encode( + stream, encodedTransactionHistoryEntryExt.generalizedTxSet); + break; } } @@ -174,13 +199,17 @@ public static TransactionHistoryEntryExt decode(XdrDataInputStream stream) throw switch (decodedTransactionHistoryEntryExt.getDiscriminant()) { case 0: break; + case 1: + decodedTransactionHistoryEntryExt.generalizedTxSet = + GeneralizedTransactionSet.decode(stream); + break; } return decodedTransactionHistoryEntryExt; } @Override public int hashCode() { - return Objects.hashCode(this.v); + return Objects.hashCode(this.generalizedTxSet, this.v); } @Override @@ -190,7 +219,8 @@ public boolean equals(Object object) { } TransactionHistoryEntryExt other = (TransactionHistoryEntryExt) object; - return Objects.equal(this.v, other.v); + return Objects.equal(this.generalizedTxSet, other.generalizedTxSet) + && Objects.equal(this.v, other.v); } } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionHistoryResultEntry.java b/src/main/java/org/stellar/sdk/xdr/TransactionHistoryResultEntry.java index d5451fbd0..6c024bcde 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionHistoryResultEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionHistoryResultEntry.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -117,9 +119,9 @@ public Builder ext(TransactionHistoryResultEntryExt ext) { public TransactionHistoryResultEntry build() { TransactionHistoryResultEntry val = new TransactionHistoryResultEntry(); - val.setLedgerSeq(ledgerSeq); - val.setTxResultSet(txResultSet); - val.setExt(ext); + val.setLedgerSeq(this.ledgerSeq); + val.setTxResultSet(this.txResultSet); + val.setExt(this.ext); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionMeta.java b/src/main/java/org/stellar/sdk/xdr/TransactionMeta.java index d83c57b17..3e23ca42c 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionMeta.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionMeta.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -17,6 +19,8 @@ // TransactionMetaV1 v1; // case 2: // TransactionMetaV2 v2; +// case 3: +// TransactionMetaV3 v3; // }; // =========================================================================== @@ -63,11 +67,22 @@ public void setV2(TransactionMetaV2 value) { this.v2 = value; } + private TransactionMetaV3 v3; + + public TransactionMetaV3 getV3() { + return this.v3; + } + + public void setV3(TransactionMetaV3 value) { + this.v3 = value; + } + public static final class Builder { private Integer discriminant; private OperationMeta[] operations; private TransactionMetaV1 v1; private TransactionMetaV2 v2; + private TransactionMetaV3 v3; public Builder discriminant(Integer discriminant) { this.discriminant = discriminant; @@ -89,12 +104,18 @@ public Builder v2(TransactionMetaV2 v2) { return this; } + public Builder v3(TransactionMetaV3 v3) { + this.v3 = v3; + return this; + } + public TransactionMeta build() { TransactionMeta val = new TransactionMeta(); val.setDiscriminant(discriminant); - val.setOperations(operations); - val.setV1(v1); - val.setV2(v2); + val.setOperations(this.operations); + val.setV1(this.v1); + val.setV2(this.v2); + val.setV3(this.v3); return val; } } @@ -118,6 +139,9 @@ public static void encode(XdrDataOutputStream stream, TransactionMeta encodedTra case 2: TransactionMetaV2.encode(stream, encodedTransactionMeta.v2); break; + case 3: + TransactionMetaV3.encode(stream, encodedTransactionMeta.v3); + break; } } @@ -143,13 +167,16 @@ public static TransactionMeta decode(XdrDataInputStream stream) throws IOExcepti case 2: decodedTransactionMeta.v2 = TransactionMetaV2.decode(stream); break; + case 3: + decodedTransactionMeta.v3 = TransactionMetaV3.decode(stream); + break; } return decodedTransactionMeta; } @Override public int hashCode() { - return Objects.hashCode(Arrays.hashCode(this.operations), this.v1, this.v2, this.v); + return Objects.hashCode(Arrays.hashCode(this.operations), this.v1, this.v2, this.v3, this.v); } @Override @@ -162,6 +189,7 @@ public boolean equals(Object object) { return Arrays.equals(this.operations, other.operations) && Objects.equal(this.v1, other.v1) && Objects.equal(this.v2, other.v2) + && Objects.equal(this.v3, other.v3) && Objects.equal(this.v, other.v); } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionMetaV1.java b/src/main/java/org/stellar/sdk/xdr/TransactionMetaV1.java index f84fb2206..5eb2e440c 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionMetaV1.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionMetaV1.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -96,8 +98,8 @@ public Builder operations(OperationMeta[] operations) { public TransactionMetaV1 build() { TransactionMetaV1 val = new TransactionMetaV1(); - val.setTxChanges(txChanges); - val.setOperations(operations); + val.setTxChanges(this.txChanges); + val.setOperations(this.operations); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionMetaV2.java b/src/main/java/org/stellar/sdk/xdr/TransactionMetaV2.java index 6e46edf1c..6980da5c6 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionMetaV2.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionMetaV2.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -119,9 +121,9 @@ public Builder txChangesAfter(LedgerEntryChanges txChangesAfter) { public TransactionMetaV2 build() { TransactionMetaV2 val = new TransactionMetaV2(); - val.setTxChangesBefore(txChangesBefore); - val.setOperations(operations); - val.setTxChangesAfter(txChangesAfter); + val.setTxChangesBefore(this.txChangesBefore); + val.setOperations(this.operations); + val.setTxChangesAfter(this.txChangesAfter); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionMetaV3.java b/src/main/java/org/stellar/sdk/xdr/TransactionMetaV3.java new file mode 100644 index 000000000..fe0112b41 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/TransactionMetaV3.java @@ -0,0 +1,186 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct TransactionMetaV3 +// { +// ExtensionPoint ext; +// +// LedgerEntryChanges txChangesBefore; // tx level changes before operations +// // are applied if any +// OperationMeta operations<>; // meta for each operation +// LedgerEntryChanges txChangesAfter; // tx level changes after operations are +// // applied if any +// SorobanTransactionMeta* sorobanMeta; // Soroban-specific meta (only for +// // Soroban transactions). +// }; + +// =========================================================================== +public class TransactionMetaV3 implements XdrElement { + public TransactionMetaV3() {} + + private ExtensionPoint ext; + + public ExtensionPoint getExt() { + return this.ext; + } + + public void setExt(ExtensionPoint value) { + this.ext = value; + } + + private LedgerEntryChanges txChangesBefore; + + public LedgerEntryChanges getTxChangesBefore() { + return this.txChangesBefore; + } + + public void setTxChangesBefore(LedgerEntryChanges value) { + this.txChangesBefore = value; + } + + private OperationMeta[] operations; + + public OperationMeta[] getOperations() { + return this.operations; + } + + public void setOperations(OperationMeta[] value) { + this.operations = value; + } + + private LedgerEntryChanges txChangesAfter; + + public LedgerEntryChanges getTxChangesAfter() { + return this.txChangesAfter; + } + + public void setTxChangesAfter(LedgerEntryChanges value) { + this.txChangesAfter = value; + } + + private SorobanTransactionMeta sorobanMeta; + + public SorobanTransactionMeta getSorobanMeta() { + return this.sorobanMeta; + } + + public void setSorobanMeta(SorobanTransactionMeta value) { + this.sorobanMeta = value; + } + + public static void encode(XdrDataOutputStream stream, TransactionMetaV3 encodedTransactionMetaV3) + throws IOException { + ExtensionPoint.encode(stream, encodedTransactionMetaV3.ext); + LedgerEntryChanges.encode(stream, encodedTransactionMetaV3.txChangesBefore); + int operationssize = encodedTransactionMetaV3.getOperations().length; + stream.writeInt(operationssize); + for (int i = 0; i < operationssize; i++) { + OperationMeta.encode(stream, encodedTransactionMetaV3.operations[i]); + } + LedgerEntryChanges.encode(stream, encodedTransactionMetaV3.txChangesAfter); + if (encodedTransactionMetaV3.sorobanMeta != null) { + stream.writeInt(1); + SorobanTransactionMeta.encode(stream, encodedTransactionMetaV3.sorobanMeta); + } else { + stream.writeInt(0); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static TransactionMetaV3 decode(XdrDataInputStream stream) throws IOException { + TransactionMetaV3 decodedTransactionMetaV3 = new TransactionMetaV3(); + decodedTransactionMetaV3.ext = ExtensionPoint.decode(stream); + decodedTransactionMetaV3.txChangesBefore = LedgerEntryChanges.decode(stream); + int operationssize = stream.readInt(); + decodedTransactionMetaV3.operations = new OperationMeta[operationssize]; + for (int i = 0; i < operationssize; i++) { + decodedTransactionMetaV3.operations[i] = OperationMeta.decode(stream); + } + decodedTransactionMetaV3.txChangesAfter = LedgerEntryChanges.decode(stream); + int sorobanMetaPresent = stream.readInt(); + if (sorobanMetaPresent != 0) { + decodedTransactionMetaV3.sorobanMeta = SorobanTransactionMeta.decode(stream); + } + return decodedTransactionMetaV3; + } + + @Override + public int hashCode() { + return Objects.hashCode( + this.ext, + this.txChangesBefore, + Arrays.hashCode(this.operations), + this.txChangesAfter, + this.sorobanMeta); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof TransactionMetaV3)) { + return false; + } + + TransactionMetaV3 other = (TransactionMetaV3) object; + return Objects.equal(this.ext, other.ext) + && Objects.equal(this.txChangesBefore, other.txChangesBefore) + && Arrays.equals(this.operations, other.operations) + && Objects.equal(this.txChangesAfter, other.txChangesAfter) + && Objects.equal(this.sorobanMeta, other.sorobanMeta); + } + + public static final class Builder { + private ExtensionPoint ext; + private LedgerEntryChanges txChangesBefore; + private OperationMeta[] operations; + private LedgerEntryChanges txChangesAfter; + private SorobanTransactionMeta sorobanMeta; + + public Builder ext(ExtensionPoint ext) { + this.ext = ext; + return this; + } + + public Builder txChangesBefore(LedgerEntryChanges txChangesBefore) { + this.txChangesBefore = txChangesBefore; + return this; + } + + public Builder operations(OperationMeta[] operations) { + this.operations = operations; + return this; + } + + public Builder txChangesAfter(LedgerEntryChanges txChangesAfter) { + this.txChangesAfter = txChangesAfter; + return this; + } + + public Builder sorobanMeta(SorobanTransactionMeta sorobanMeta) { + this.sorobanMeta = sorobanMeta; + return this; + } + + public TransactionMetaV3 build() { + TransactionMetaV3 val = new TransactionMetaV3(); + val.setExt(this.ext); + val.setTxChangesBefore(this.txChangesBefore); + val.setOperations(this.operations); + val.setTxChangesAfter(this.txChangesAfter); + val.setSorobanMeta(this.sorobanMeta); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionPhase.java b/src/main/java/org/stellar/sdk/xdr/TransactionPhase.java new file mode 100644 index 000000000..737f994e1 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/TransactionPhase.java @@ -0,0 +1,116 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// union TransactionPhase switch (int v) +// { +// case 0: +// TxSetComponent v0Components<>; +// }; + +// =========================================================================== +public class TransactionPhase implements XdrElement { + public TransactionPhase() {} + + Integer v; + + public Integer getDiscriminant() { + return this.v; + } + + public void setDiscriminant(Integer value) { + this.v = value; + } + + private TxSetComponent[] v0Components; + + public TxSetComponent[] getV0Components() { + return this.v0Components; + } + + public void setV0Components(TxSetComponent[] value) { + this.v0Components = value; + } + + public static final class Builder { + private Integer discriminant; + private TxSetComponent[] v0Components; + + public Builder discriminant(Integer discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder v0Components(TxSetComponent[] v0Components) { + this.v0Components = v0Components; + return this; + } + + public TransactionPhase build() { + TransactionPhase val = new TransactionPhase(); + val.setDiscriminant(discriminant); + val.setV0Components(this.v0Components); + return val; + } + } + + public static void encode(XdrDataOutputStream stream, TransactionPhase encodedTransactionPhase) + throws IOException { + // Xdrgen::AST::Typespecs::Int + // Integer + stream.writeInt(encodedTransactionPhase.getDiscriminant().intValue()); + switch (encodedTransactionPhase.getDiscriminant()) { + case 0: + int v0Componentssize = encodedTransactionPhase.getV0Components().length; + stream.writeInt(v0Componentssize); + for (int i = 0; i < v0Componentssize; i++) { + TxSetComponent.encode(stream, encodedTransactionPhase.v0Components[i]); + } + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static TransactionPhase decode(XdrDataInputStream stream) throws IOException { + TransactionPhase decodedTransactionPhase = new TransactionPhase(); + Integer discriminant = stream.readInt(); + decodedTransactionPhase.setDiscriminant(discriminant); + switch (decodedTransactionPhase.getDiscriminant()) { + case 0: + int v0Componentssize = stream.readInt(); + decodedTransactionPhase.v0Components = new TxSetComponent[v0Componentssize]; + for (int i = 0; i < v0Componentssize; i++) { + decodedTransactionPhase.v0Components[i] = TxSetComponent.decode(stream); + } + break; + } + return decodedTransactionPhase; + } + + @Override + public int hashCode() { + return Objects.hashCode(Arrays.hashCode(this.v0Components), this.v); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof TransactionPhase)) { + return false; + } + + TransactionPhase other = (TransactionPhase) object; + return Arrays.equals(this.v0Components, other.v0Components) && Objects.equal(this.v, other.v); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionResult.java b/src/main/java/org/stellar/sdk/xdr/TransactionResult.java index 13032d1de..34a68ea31 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionResult.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionResult.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -21,7 +23,22 @@ // case txSUCCESS: // case txFAILED: // OperationResult results<>; -// default: +// case txTOO_EARLY: +// case txTOO_LATE: +// case txMISSING_OPERATION: +// case txBAD_SEQ: +// case txBAD_AUTH: +// case txINSUFFICIENT_BALANCE: +// case txNO_ACCOUNT: +// case txINSUFFICIENT_FEE: +// case txBAD_AUTH_EXTRA: +// case txINTERNAL_ERROR: +// case txNOT_SUPPORTED: +// // case txFEE_BUMP_INNER_FAILED: handled above +// case txBAD_SPONSORSHIP: +// case txBAD_MIN_SEQ_AGE_OR_GAP: +// case txMALFORMED: +// case txSOROBAN_RESOURCE_LIMIT_EXCEEDED: // void; // } // result; @@ -127,9 +144,9 @@ public Builder ext(TransactionResultExt ext) { public TransactionResult build() { TransactionResult val = new TransactionResult(); - val.setFeeCharged(feeCharged); - val.setResult(result); - val.setExt(ext); + val.setFeeCharged(this.feeCharged); + val.setResult(this.result); + val.setExt(this.ext); return val; } } @@ -190,8 +207,8 @@ public Builder results(OperationResult[] results) { public TransactionResultResult build() { TransactionResultResult val = new TransactionResultResult(); val.setDiscriminant(discriminant); - val.setInnerResultPair(innerResultPair); - val.setResults(results); + val.setInnerResultPair(this.innerResultPair); + val.setResults(this.results); return val; } } @@ -215,7 +232,21 @@ public static void encode( OperationResult.encode(stream, encodedTransactionResultResult.results[i]); } break; - default: + case txTOO_EARLY: + case txTOO_LATE: + case txMISSING_OPERATION: + case txBAD_SEQ: + case txBAD_AUTH: + case txINSUFFICIENT_BALANCE: + case txNO_ACCOUNT: + case txINSUFFICIENT_FEE: + case txBAD_AUTH_EXTRA: + case txINTERNAL_ERROR: + case txNOT_SUPPORTED: + case txBAD_SPONSORSHIP: + case txBAD_MIN_SEQ_AGE_OR_GAP: + case txMALFORMED: + case txSOROBAN_RESOURCE_LIMIT_EXCEEDED: break; } } @@ -242,7 +273,21 @@ public static TransactionResultResult decode(XdrDataInputStream stream) throws I decodedTransactionResultResult.results[i] = OperationResult.decode(stream); } break; - default: + case txTOO_EARLY: + case txTOO_LATE: + case txMISSING_OPERATION: + case txBAD_SEQ: + case txBAD_AUTH: + case txINSUFFICIENT_BALANCE: + case txNO_ACCOUNT: + case txINSUFFICIENT_FEE: + case txBAD_AUTH_EXTRA: + case txINTERNAL_ERROR: + case txNOT_SUPPORTED: + case txBAD_SPONSORSHIP: + case txBAD_MIN_SEQ_AGE_OR_GAP: + case txMALFORMED: + case txSOROBAN_RESOURCE_LIMIT_EXCEEDED: break; } return decodedTransactionResultResult; diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionResultCode.java b/src/main/java/org/stellar/sdk/xdr/TransactionResultCode.java index fa7134edc..79bfb63c6 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionResultCode.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ @@ -31,7 +33,9 @@ // txBAD_SPONSORSHIP = -14, // sponsorship not confirmed // txBAD_MIN_SEQ_AGE_OR_GAP = // -15, // minSeqAge or minSeqLedgerGap conditions not met -// txMALFORMED = -16 // precondition is invalid +// txMALFORMED = -16, // precondition is invalid +// // declared Soroban resource usage exceeds the network limit +// txSOROBAN_RESOURCE_LIMIT_EXCEEDED = -17 // }; // =========================================================================== @@ -54,6 +58,7 @@ public enum TransactionResultCode implements XdrElement { txBAD_SPONSORSHIP(-14), txBAD_MIN_SEQ_AGE_OR_GAP(-15), txMALFORMED(-16), + txSOROBAN_RESOURCE_LIMIT_EXCEEDED(-17), ; private int mValue; @@ -104,6 +109,8 @@ public static TransactionResultCode decode(XdrDataInputStream stream) throws IOE return txBAD_MIN_SEQ_AGE_OR_GAP; case -16: return txMALFORMED; + case -17: + return txSOROBAN_RESOURCE_LIMIT_EXCEEDED; default: throw new RuntimeException("Unknown enum value: " + value); } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionResultMeta.java b/src/main/java/org/stellar/sdk/xdr/TransactionResultMeta.java index b1576aa09..c67b9ef9b 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionResultMeta.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionResultMeta.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -108,9 +110,9 @@ public Builder txApplyProcessing(TransactionMeta txApplyProcessing) { public TransactionResultMeta build() { TransactionResultMeta val = new TransactionResultMeta(); - val.setResult(result); - val.setFeeProcessing(feeProcessing); - val.setTxApplyProcessing(txApplyProcessing); + val.setResult(this.result); + val.setFeeProcessing(this.feeProcessing); + val.setTxApplyProcessing(this.txApplyProcessing); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionResultPair.java b/src/main/java/org/stellar/sdk/xdr/TransactionResultPair.java index f925e376f..82667278f 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionResultPair.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionResultPair.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -88,8 +90,8 @@ public Builder result(TransactionResult result) { public TransactionResultPair build() { TransactionResultPair val = new TransactionResultPair(); - val.setTransactionHash(transactionHash); - val.setResult(result); + val.setTransactionHash(this.transactionHash); + val.setResult(this.result); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionResultSet.java b/src/main/java/org/stellar/sdk/xdr/TransactionResultSet.java index c16007de8..3e237a5ff 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionResultSet.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionResultSet.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; @@ -76,7 +78,7 @@ public Builder results(TransactionResultPair[] results) { public TransactionResultSet build() { TransactionResultSet val = new TransactionResultSet(); - val.setResults(results); + val.setResults(this.results); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionSet.java b/src/main/java/org/stellar/sdk/xdr/TransactionSet.java index 7e83e7156..65cad977a 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionSet.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionSet.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -96,8 +98,8 @@ public Builder txs(TransactionEnvelope[] txs) { public TransactionSet build() { TransactionSet val = new TransactionSet(); - val.setPreviousLedgerHash(previousLedgerHash); - val.setTxs(txs); + val.setPreviousLedgerHash(this.previousLedgerHash); + val.setTxs(this.txs); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionSetV1.java b/src/main/java/org/stellar/sdk/xdr/TransactionSetV1.java new file mode 100644 index 000000000..ce0d8aac8 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/TransactionSetV1.java @@ -0,0 +1,106 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// struct TransactionSetV1 +// { +// Hash previousLedgerHash; +// TransactionPhase phases<>; +// }; + +// =========================================================================== +public class TransactionSetV1 implements XdrElement { + public TransactionSetV1() {} + + private Hash previousLedgerHash; + + public Hash getPreviousLedgerHash() { + return this.previousLedgerHash; + } + + public void setPreviousLedgerHash(Hash value) { + this.previousLedgerHash = value; + } + + private TransactionPhase[] phases; + + public TransactionPhase[] getPhases() { + return this.phases; + } + + public void setPhases(TransactionPhase[] value) { + this.phases = value; + } + + public static void encode(XdrDataOutputStream stream, TransactionSetV1 encodedTransactionSetV1) + throws IOException { + Hash.encode(stream, encodedTransactionSetV1.previousLedgerHash); + int phasessize = encodedTransactionSetV1.getPhases().length; + stream.writeInt(phasessize); + for (int i = 0; i < phasessize; i++) { + TransactionPhase.encode(stream, encodedTransactionSetV1.phases[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static TransactionSetV1 decode(XdrDataInputStream stream) throws IOException { + TransactionSetV1 decodedTransactionSetV1 = new TransactionSetV1(); + decodedTransactionSetV1.previousLedgerHash = Hash.decode(stream); + int phasessize = stream.readInt(); + decodedTransactionSetV1.phases = new TransactionPhase[phasessize]; + for (int i = 0; i < phasessize; i++) { + decodedTransactionSetV1.phases[i] = TransactionPhase.decode(stream); + } + return decodedTransactionSetV1; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.previousLedgerHash, Arrays.hashCode(this.phases)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof TransactionSetV1)) { + return false; + } + + TransactionSetV1 other = (TransactionSetV1) object; + return Objects.equal(this.previousLedgerHash, other.previousLedgerHash) + && Arrays.equals(this.phases, other.phases); + } + + public static final class Builder { + private Hash previousLedgerHash; + private TransactionPhase[] phases; + + public Builder previousLedgerHash(Hash previousLedgerHash) { + this.previousLedgerHash = previousLedgerHash; + return this; + } + + public Builder phases(TransactionPhase[] phases) { + this.phases = phases; + return this; + } + + public TransactionSetV1 build() { + TransactionSetV1 val = new TransactionSetV1(); + val.setPreviousLedgerHash(this.previousLedgerHash); + val.setPhases(this.phases); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionSignaturePayload.java b/src/main/java/org/stellar/sdk/xdr/TransactionSignaturePayload.java index a15eb3dc3..9a9f09974 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionSignaturePayload.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionSignaturePayload.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -100,8 +102,8 @@ public Builder taggedTransaction( public TransactionSignaturePayload build() { TransactionSignaturePayload val = new TransactionSignaturePayload(); - val.setNetworkId(networkId); - val.setTaggedTransaction(taggedTransaction); + val.setNetworkId(this.networkId); + val.setTaggedTransaction(this.taggedTransaction); return val; } } @@ -163,8 +165,8 @@ public TransactionSignaturePayloadTaggedTransaction build() { TransactionSignaturePayloadTaggedTransaction val = new TransactionSignaturePayloadTaggedTransaction(); val.setDiscriminant(discriminant); - val.setTx(tx); - val.setFeeBump(feeBump); + val.setTx(this.tx); + val.setFeeBump(this.feeBump); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionV0.java b/src/main/java/org/stellar/sdk/xdr/TransactionV0.java index cfaa8b6ce..d7658cd16 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionV0.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionV0.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -216,13 +218,13 @@ public Builder ext(TransactionV0Ext ext) { public TransactionV0 build() { TransactionV0 val = new TransactionV0(); - val.setSourceAccountEd25519(sourceAccountEd25519); - val.setFee(fee); - val.setSeqNum(seqNum); - val.setTimeBounds(timeBounds); - val.setMemo(memo); - val.setOperations(operations); - val.setExt(ext); + val.setSourceAccountEd25519(this.sourceAccountEd25519); + val.setFee(this.fee); + val.setSeqNum(this.seqNum); + val.setTimeBounds(this.timeBounds); + val.setMemo(this.memo); + val.setOperations(this.operations); + val.setExt(this.ext); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionV0Envelope.java b/src/main/java/org/stellar/sdk/xdr/TransactionV0Envelope.java index 90892b658..808f32ae0 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionV0Envelope.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionV0Envelope.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -98,8 +100,8 @@ public Builder signatures(DecoratedSignature[] signatures) { public TransactionV0Envelope build() { TransactionV0Envelope val = new TransactionV0Envelope(); - val.setTx(tx); - val.setSignatures(signatures); + val.setTx(this.tx); + val.setSignatures(this.signatures); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionV1Envelope.java b/src/main/java/org/stellar/sdk/xdr/TransactionV1Envelope.java index be2118dcc..9a06fbda4 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionV1Envelope.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionV1Envelope.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; import java.util.Arrays; @@ -98,8 +100,8 @@ public Builder signatures(DecoratedSignature[] signatures) { public TransactionV1Envelope build() { TransactionV1Envelope val = new TransactionV1Envelope(); - val.setTx(tx); - val.setSignatures(signatures); + val.setTx(this.tx); + val.setSignatures(this.signatures); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TrustLineAsset.java b/src/main/java/org/stellar/sdk/xdr/TrustLineAsset.java index b74a7bd62..1e1226026 100644 --- a/src/main/java/org/stellar/sdk/xdr/TrustLineAsset.java +++ b/src/main/java/org/stellar/sdk/xdr/TrustLineAsset.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -98,9 +100,9 @@ public Builder liquidityPoolID(PoolID liquidityPoolID) { public TrustLineAsset build() { TrustLineAsset val = new TrustLineAsset(); val.setDiscriminant(discriminant); - val.setAlphaNum4(alphaNum4); - val.setAlphaNum12(alphaNum12); - val.setLiquidityPoolID(liquidityPoolID); + val.setAlphaNum4(this.alphaNum4); + val.setAlphaNum12(this.alphaNum12); + val.setLiquidityPoolID(this.liquidityPoolID); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TrustLineEntry.java b/src/main/java/org/stellar/sdk/xdr/TrustLineEntry.java index fa707f3e6..f1c65dcc2 100644 --- a/src/main/java/org/stellar/sdk/xdr/TrustLineEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/TrustLineEntry.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -191,12 +193,12 @@ public Builder ext(TrustLineEntryExt ext) { public TrustLineEntry build() { TrustLineEntry val = new TrustLineEntry(); - val.setAccountID(accountID); - val.setAsset(asset); - val.setBalance(balance); - val.setLimit(limit); - val.setFlags(flags); - val.setExt(ext); + val.setAccountID(this.accountID); + val.setAsset(this.asset); + val.setBalance(this.balance); + val.setLimit(this.limit); + val.setFlags(this.flags); + val.setExt(this.ext); return val; } } @@ -241,7 +243,7 @@ public Builder v1(TrustLineEntryV1 v1) { public TrustLineEntryExt build() { TrustLineEntryExt val = new TrustLineEntryExt(); val.setDiscriminant(discriminant); - val.setV1(v1); + val.setV1(this.v1); return val; } } @@ -365,8 +367,8 @@ public Builder ext(TrustLineEntryV1Ext ext) { public TrustLineEntryV1 build() { TrustLineEntryV1 val = new TrustLineEntryV1(); - val.setLiabilities(liabilities); - val.setExt(ext); + val.setLiabilities(this.liabilities); + val.setExt(this.ext); return val; } } @@ -411,7 +413,7 @@ public Builder v2(TrustLineEntryExtensionV2 v2) { public TrustLineEntryV1Ext build() { TrustLineEntryV1Ext val = new TrustLineEntryV1Ext(); val.setDiscriminant(discriminant); - val.setV2(v2); + val.setV2(this.v2); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TrustLineEntryExtensionV2.java b/src/main/java/org/stellar/sdk/xdr/TrustLineEntryExtensionV2.java index cd08a15ab..35c475dba 100644 --- a/src/main/java/org/stellar/sdk/xdr/TrustLineEntryExtensionV2.java +++ b/src/main/java/org/stellar/sdk/xdr/TrustLineEntryExtensionV2.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -94,8 +96,8 @@ public Builder ext(TrustLineEntryExtensionV2Ext ext) { public TrustLineEntryExtensionV2 build() { TrustLineEntryExtensionV2 val = new TrustLineEntryExtensionV2(); - val.setLiquidityPoolUseCount(liquidityPoolUseCount); - val.setExt(ext); + val.setLiquidityPoolUseCount(this.liquidityPoolUseCount); + val.setExt(this.ext); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/TrustLineFlags.java b/src/main/java/org/stellar/sdk/xdr/TrustLineFlags.java index 24303725c..3f4be20b7 100644 --- a/src/main/java/org/stellar/sdk/xdr/TrustLineFlags.java +++ b/src/main/java/org/stellar/sdk/xdr/TrustLineFlags.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; // === xdr source ============================================================ diff --git a/src/main/java/org/stellar/sdk/xdr/TxAdvertVector.java b/src/main/java/org/stellar/sdk/xdr/TxAdvertVector.java new file mode 100644 index 000000000..f186d6387 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/TxAdvertVector.java @@ -0,0 +1,70 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// typedef Hash TxAdvertVector; + +// =========================================================================== +public class TxAdvertVector implements XdrElement { + private Hash[] TxAdvertVector; + + public TxAdvertVector() {} + + public TxAdvertVector(Hash[] TxAdvertVector) { + this.TxAdvertVector = TxAdvertVector; + } + + public Hash[] getTxAdvertVector() { + return this.TxAdvertVector; + } + + public void setTxAdvertVector(Hash[] value) { + this.TxAdvertVector = value; + } + + public static void encode(XdrDataOutputStream stream, TxAdvertVector encodedTxAdvertVector) + throws IOException { + int TxAdvertVectorsize = encodedTxAdvertVector.getTxAdvertVector().length; + stream.writeInt(TxAdvertVectorsize); + for (int i = 0; i < TxAdvertVectorsize; i++) { + Hash.encode(stream, encodedTxAdvertVector.TxAdvertVector[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static TxAdvertVector decode(XdrDataInputStream stream) throws IOException { + TxAdvertVector decodedTxAdvertVector = new TxAdvertVector(); + int TxAdvertVectorsize = stream.readInt(); + decodedTxAdvertVector.TxAdvertVector = new Hash[TxAdvertVectorsize]; + for (int i = 0; i < TxAdvertVectorsize; i++) { + decodedTxAdvertVector.TxAdvertVector[i] = Hash.decode(stream); + } + return decodedTxAdvertVector; + } + + @Override + public int hashCode() { + return Arrays.hashCode(this.TxAdvertVector); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof TxAdvertVector)) { + return false; + } + + TxAdvertVector other = (TxAdvertVector) object; + return Arrays.equals(this.TxAdvertVector, other.TxAdvertVector); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/TxDemandVector.java b/src/main/java/org/stellar/sdk/xdr/TxDemandVector.java new file mode 100644 index 000000000..1cc302b63 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/TxDemandVector.java @@ -0,0 +1,70 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// typedef Hash TxDemandVector; + +// =========================================================================== +public class TxDemandVector implements XdrElement { + private Hash[] TxDemandVector; + + public TxDemandVector() {} + + public TxDemandVector(Hash[] TxDemandVector) { + this.TxDemandVector = TxDemandVector; + } + + public Hash[] getTxDemandVector() { + return this.TxDemandVector; + } + + public void setTxDemandVector(Hash[] value) { + this.TxDemandVector = value; + } + + public static void encode(XdrDataOutputStream stream, TxDemandVector encodedTxDemandVector) + throws IOException { + int TxDemandVectorsize = encodedTxDemandVector.getTxDemandVector().length; + stream.writeInt(TxDemandVectorsize); + for (int i = 0; i < TxDemandVectorsize; i++) { + Hash.encode(stream, encodedTxDemandVector.TxDemandVector[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static TxDemandVector decode(XdrDataInputStream stream) throws IOException { + TxDemandVector decodedTxDemandVector = new TxDemandVector(); + int TxDemandVectorsize = stream.readInt(); + decodedTxDemandVector.TxDemandVector = new Hash[TxDemandVectorsize]; + for (int i = 0; i < TxDemandVectorsize; i++) { + decodedTxDemandVector.TxDemandVector[i] = Hash.decode(stream); + } + return decodedTxDemandVector; + } + + @Override + public int hashCode() { + return Arrays.hashCode(this.TxDemandVector); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof TxDemandVector)) { + return false; + } + + TxDemandVector other = (TxDemandVector) object; + return Arrays.equals(this.TxDemandVector, other.TxDemandVector); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/TxSetComponent.java b/src/main/java/org/stellar/sdk/xdr/TxSetComponent.java new file mode 100644 index 000000000..bb01ce02c --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/TxSetComponent.java @@ -0,0 +1,214 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.util.Arrays; + +// === xdr source ============================================================ + +// union TxSetComponent switch (TxSetComponentType type) +// { +// case TXSET_COMP_TXS_MAYBE_DISCOUNTED_FEE: +// struct +// { +// int64* baseFee; +// TransactionEnvelope txs<>; +// } txsMaybeDiscountedFee; +// }; + +// =========================================================================== +public class TxSetComponent implements XdrElement { + public TxSetComponent() {} + + TxSetComponentType type; + + public TxSetComponentType getDiscriminant() { + return this.type; + } + + public void setDiscriminant(TxSetComponentType value) { + this.type = value; + } + + private TxSetComponentTxsMaybeDiscountedFee txsMaybeDiscountedFee; + + public TxSetComponentTxsMaybeDiscountedFee getTxsMaybeDiscountedFee() { + return this.txsMaybeDiscountedFee; + } + + public void setTxsMaybeDiscountedFee(TxSetComponentTxsMaybeDiscountedFee value) { + this.txsMaybeDiscountedFee = value; + } + + public static final class Builder { + private TxSetComponentType discriminant; + private TxSetComponentTxsMaybeDiscountedFee txsMaybeDiscountedFee; + + public Builder discriminant(TxSetComponentType discriminant) { + this.discriminant = discriminant; + return this; + } + + public Builder txsMaybeDiscountedFee( + TxSetComponentTxsMaybeDiscountedFee txsMaybeDiscountedFee) { + this.txsMaybeDiscountedFee = txsMaybeDiscountedFee; + return this; + } + + public TxSetComponent build() { + TxSetComponent val = new TxSetComponent(); + val.setDiscriminant(discriminant); + val.setTxsMaybeDiscountedFee(this.txsMaybeDiscountedFee); + return val; + } + } + + public static void encode(XdrDataOutputStream stream, TxSetComponent encodedTxSetComponent) + throws IOException { + // Xdrgen::AST::Identifier + // TxSetComponentType + stream.writeInt(encodedTxSetComponent.getDiscriminant().getValue()); + switch (encodedTxSetComponent.getDiscriminant()) { + case TXSET_COMP_TXS_MAYBE_DISCOUNTED_FEE: + TxSetComponentTxsMaybeDiscountedFee.encode( + stream, encodedTxSetComponent.txsMaybeDiscountedFee); + break; + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static TxSetComponent decode(XdrDataInputStream stream) throws IOException { + TxSetComponent decodedTxSetComponent = new TxSetComponent(); + TxSetComponentType discriminant = TxSetComponentType.decode(stream); + decodedTxSetComponent.setDiscriminant(discriminant); + switch (decodedTxSetComponent.getDiscriminant()) { + case TXSET_COMP_TXS_MAYBE_DISCOUNTED_FEE: + decodedTxSetComponent.txsMaybeDiscountedFee = + TxSetComponentTxsMaybeDiscountedFee.decode(stream); + break; + } + return decodedTxSetComponent; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.txsMaybeDiscountedFee, this.type); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof TxSetComponent)) { + return false; + } + + TxSetComponent other = (TxSetComponent) object; + return Objects.equal(this.txsMaybeDiscountedFee, other.txsMaybeDiscountedFee) + && Objects.equal(this.type, other.type); + } + + public static class TxSetComponentTxsMaybeDiscountedFee { + public TxSetComponentTxsMaybeDiscountedFee() {} + + private Int64 baseFee; + + public Int64 getBaseFee() { + return this.baseFee; + } + + public void setBaseFee(Int64 value) { + this.baseFee = value; + } + + private TransactionEnvelope[] txs; + + public TransactionEnvelope[] getTxs() { + return this.txs; + } + + public void setTxs(TransactionEnvelope[] value) { + this.txs = value; + } + + public static void encode( + XdrDataOutputStream stream, + TxSetComponentTxsMaybeDiscountedFee encodedTxSetComponentTxsMaybeDiscountedFee) + throws IOException { + if (encodedTxSetComponentTxsMaybeDiscountedFee.baseFee != null) { + stream.writeInt(1); + Int64.encode(stream, encodedTxSetComponentTxsMaybeDiscountedFee.baseFee); + } else { + stream.writeInt(0); + } + int txssize = encodedTxSetComponentTxsMaybeDiscountedFee.getTxs().length; + stream.writeInt(txssize); + for (int i = 0; i < txssize; i++) { + TransactionEnvelope.encode(stream, encodedTxSetComponentTxsMaybeDiscountedFee.txs[i]); + } + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static TxSetComponentTxsMaybeDiscountedFee decode(XdrDataInputStream stream) + throws IOException { + TxSetComponentTxsMaybeDiscountedFee decodedTxSetComponentTxsMaybeDiscountedFee = + new TxSetComponentTxsMaybeDiscountedFee(); + int baseFeePresent = stream.readInt(); + if (baseFeePresent != 0) { + decodedTxSetComponentTxsMaybeDiscountedFee.baseFee = Int64.decode(stream); + } + int txssize = stream.readInt(); + decodedTxSetComponentTxsMaybeDiscountedFee.txs = new TransactionEnvelope[txssize]; + for (int i = 0; i < txssize; i++) { + decodedTxSetComponentTxsMaybeDiscountedFee.txs[i] = TransactionEnvelope.decode(stream); + } + return decodedTxSetComponentTxsMaybeDiscountedFee; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.baseFee, Arrays.hashCode(this.txs)); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof TxSetComponentTxsMaybeDiscountedFee)) { + return false; + } + + TxSetComponentTxsMaybeDiscountedFee other = (TxSetComponentTxsMaybeDiscountedFee) object; + return Objects.equal(this.baseFee, other.baseFee) && Arrays.equals(this.txs, other.txs); + } + + public static final class Builder { + private Int64 baseFee; + private TransactionEnvelope[] txs; + + public Builder baseFee(Int64 baseFee) { + this.baseFee = baseFee; + return this; + } + + public Builder txs(TransactionEnvelope[] txs) { + this.txs = txs; + return this; + } + + public TxSetComponentTxsMaybeDiscountedFee build() { + TxSetComponentTxsMaybeDiscountedFee val = new TxSetComponentTxsMaybeDiscountedFee(); + val.setBaseFee(this.baseFee); + val.setTxs(this.txs); + return val; + } + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/TxSetComponentType.java b/src/main/java/org/stellar/sdk/xdr/TxSetComponentType.java new file mode 100644 index 000000000..4b9408854 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/TxSetComponentType.java @@ -0,0 +1,51 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import java.io.IOException; + +// === xdr source ============================================================ + +// enum TxSetComponentType +// { +// // txs with effective fee <= bid derived from a base fee (if any). +// // If base fee is not specified, no discount is applied. +// TXSET_COMP_TXS_MAYBE_DISCOUNTED_FEE = 0 +// }; + +// =========================================================================== +public enum TxSetComponentType implements XdrElement { + TXSET_COMP_TXS_MAYBE_DISCOUNTED_FEE(0), + ; + private int mValue; + + TxSetComponentType(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static TxSetComponentType decode(XdrDataInputStream stream) throws IOException { + int value = stream.readInt(); + switch (value) { + case 0: + return TXSET_COMP_TXS_MAYBE_DISCOUNTED_FEE; + default: + throw new RuntimeException("Unknown enum value: " + value); + } + } + + public static void encode(XdrDataOutputStream stream, TxSetComponentType value) + throws IOException { + stream.writeInt(value.getValue()); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/UInt128Parts.java b/src/main/java/org/stellar/sdk/xdr/UInt128Parts.java new file mode 100644 index 000000000..e66e95183 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/UInt128Parts.java @@ -0,0 +1,95 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct UInt128Parts { +// uint64 hi; +// uint64 lo; +// }; + +// =========================================================================== +public class UInt128Parts implements XdrElement { + public UInt128Parts() {} + + private Uint64 hi; + + public Uint64 getHi() { + return this.hi; + } + + public void setHi(Uint64 value) { + this.hi = value; + } + + private Uint64 lo; + + public Uint64 getLo() { + return this.lo; + } + + public void setLo(Uint64 value) { + this.lo = value; + } + + public static void encode(XdrDataOutputStream stream, UInt128Parts encodedUInt128Parts) + throws IOException { + Uint64.encode(stream, encodedUInt128Parts.hi); + Uint64.encode(stream, encodedUInt128Parts.lo); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static UInt128Parts decode(XdrDataInputStream stream) throws IOException { + UInt128Parts decodedUInt128Parts = new UInt128Parts(); + decodedUInt128Parts.hi = Uint64.decode(stream); + decodedUInt128Parts.lo = Uint64.decode(stream); + return decodedUInt128Parts; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.hi, this.lo); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof UInt128Parts)) { + return false; + } + + UInt128Parts other = (UInt128Parts) object; + return Objects.equal(this.hi, other.hi) && Objects.equal(this.lo, other.lo); + } + + public static final class Builder { + private Uint64 hi; + private Uint64 lo; + + public Builder hi(Uint64 hi) { + this.hi = hi; + return this; + } + + public Builder lo(Uint64 lo) { + this.lo = lo; + return this; + } + + public UInt128Parts build() { + UInt128Parts val = new UInt128Parts(); + val.setHi(this.hi); + val.setLo(this.lo); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/UInt256Parts.java b/src/main/java/org/stellar/sdk/xdr/UInt256Parts.java new file mode 100644 index 000000000..f7151f260 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/UInt256Parts.java @@ -0,0 +1,138 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import static org.stellar.sdk.xdr.Constants.*; + +import com.google.common.base.Objects; +import java.io.IOException; + +// === xdr source ============================================================ + +// struct UInt256Parts { +// uint64 hi_hi; +// uint64 hi_lo; +// uint64 lo_hi; +// uint64 lo_lo; +// }; + +// =========================================================================== +public class UInt256Parts implements XdrElement { + public UInt256Parts() {} + + private Uint64 hi_hi; + + public Uint64 getHi_hi() { + return this.hi_hi; + } + + public void setHi_hi(Uint64 value) { + this.hi_hi = value; + } + + private Uint64 hi_lo; + + public Uint64 getHi_lo() { + return this.hi_lo; + } + + public void setHi_lo(Uint64 value) { + this.hi_lo = value; + } + + private Uint64 lo_hi; + + public Uint64 getLo_hi() { + return this.lo_hi; + } + + public void setLo_hi(Uint64 value) { + this.lo_hi = value; + } + + private Uint64 lo_lo; + + public Uint64 getLo_lo() { + return this.lo_lo; + } + + public void setLo_lo(Uint64 value) { + this.lo_lo = value; + } + + public static void encode(XdrDataOutputStream stream, UInt256Parts encodedUInt256Parts) + throws IOException { + Uint64.encode(stream, encodedUInt256Parts.hi_hi); + Uint64.encode(stream, encodedUInt256Parts.hi_lo); + Uint64.encode(stream, encodedUInt256Parts.lo_hi); + Uint64.encode(stream, encodedUInt256Parts.lo_lo); + } + + public void encode(XdrDataOutputStream stream) throws IOException { + encode(stream, this); + } + + public static UInt256Parts decode(XdrDataInputStream stream) throws IOException { + UInt256Parts decodedUInt256Parts = new UInt256Parts(); + decodedUInt256Parts.hi_hi = Uint64.decode(stream); + decodedUInt256Parts.hi_lo = Uint64.decode(stream); + decodedUInt256Parts.lo_hi = Uint64.decode(stream); + decodedUInt256Parts.lo_lo = Uint64.decode(stream); + return decodedUInt256Parts; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.hi_hi, this.hi_lo, this.lo_hi, this.lo_lo); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof UInt256Parts)) { + return false; + } + + UInt256Parts other = (UInt256Parts) object; + return Objects.equal(this.hi_hi, other.hi_hi) + && Objects.equal(this.hi_lo, other.hi_lo) + && Objects.equal(this.lo_hi, other.lo_hi) + && Objects.equal(this.lo_lo, other.lo_lo); + } + + public static final class Builder { + private Uint64 hi_hi; + private Uint64 hi_lo; + private Uint64 lo_hi; + private Uint64 lo_lo; + + public Builder hi_hi(Uint64 hi_hi) { + this.hi_hi = hi_hi; + return this; + } + + public Builder hi_lo(Uint64 hi_lo) { + this.hi_lo = hi_lo; + return this; + } + + public Builder lo_hi(Uint64 lo_hi) { + this.lo_hi = lo_hi; + return this; + } + + public Builder lo_lo(Uint64 lo_lo) { + this.lo_lo = lo_lo; + return this; + } + + public UInt256Parts build() { + UInt256Parts val = new UInt256Parts(); + val.setHi_hi(this.hi_hi); + val.setHi_lo(this.hi_lo); + val.setLo_hi(this.lo_hi); + val.setLo_lo(this.lo_lo); + return val; + } + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/Uint256.java b/src/main/java/org/stellar/sdk/xdr/Uint256.java index 21e0bde5e..bd7832e1a 100644 --- a/src/main/java/org/stellar/sdk/xdr/Uint256.java +++ b/src/main/java/org/stellar/sdk/xdr/Uint256.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/org/stellar/sdk/xdr/Uint32.java b/src/main/java/org/stellar/sdk/xdr/Uint32.java index 76b47f98a..57f564457 100644 --- a/src/main/java/org/stellar/sdk/xdr/Uint32.java +++ b/src/main/java/org/stellar/sdk/xdr/Uint32.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; diff --git a/src/main/java/org/stellar/sdk/xdr/Uint64.java b/src/main/java/org/stellar/sdk/xdr/Uint64.java index a38bc2224..b0ee52e74 100644 --- a/src/main/java/org/stellar/sdk/xdr/Uint64.java +++ b/src/main/java/org/stellar/sdk/xdr/Uint64.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; diff --git a/src/main/java/org/stellar/sdk/xdr/UpgradeEntryMeta.java b/src/main/java/org/stellar/sdk/xdr/UpgradeEntryMeta.java index 9c41a19be..1eb4bbd40 100644 --- a/src/main/java/org/stellar/sdk/xdr/UpgradeEntryMeta.java +++ b/src/main/java/org/stellar/sdk/xdr/UpgradeEntryMeta.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import com.google.common.base.Objects; import java.io.IOException; @@ -86,8 +88,8 @@ public Builder changes(LedgerEntryChanges changes) { public UpgradeEntryMeta build() { UpgradeEntryMeta val = new UpgradeEntryMeta(); - val.setUpgrade(upgrade); - val.setChanges(changes); + val.setUpgrade(this.upgrade); + val.setChanges(this.changes); return val; } } diff --git a/src/main/java/org/stellar/sdk/xdr/UpgradeType.java b/src/main/java/org/stellar/sdk/xdr/UpgradeType.java index 0e9866853..cdd8d52de 100644 --- a/src/main/java/org/stellar/sdk/xdr/UpgradeType.java +++ b/src/main/java/org/stellar/sdk/xdr/UpgradeType.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; diff --git a/src/main/java/org/stellar/sdk/xdr/Value.java b/src/main/java/org/stellar/sdk/xdr/Value.java index c52ffe1e7..c8b719389 100644 --- a/src/main/java/org/stellar/sdk/xdr/Value.java +++ b/src/main/java/org/stellar/sdk/xdr/Value.java @@ -3,6 +3,8 @@ package org.stellar.sdk.xdr; +import static org.stellar.sdk.xdr.Constants.*; + import java.io.IOException; import java.util.Arrays; diff --git a/src/test/java/org/stellar/sdk/AddressTest.java b/src/test/java/org/stellar/sdk/AddressTest.java new file mode 100644 index 000000000..28e843fdb --- /dev/null +++ b/src/test/java/org/stellar/sdk/AddressTest.java @@ -0,0 +1,165 @@ +package org.stellar.sdk; + +import static junit.framework.TestCase.assertEquals; +import static org.junit.Assert.fail; + +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import org.junit.Assert; +import org.junit.Test; +import org.stellar.sdk.xdr.SCAddress; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.XdrDataInputStream; + +public class AddressTest { + @Test + public void testConstructorAccountId() { + String accountId = "GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ"; + Address address = new Address(accountId); + assertEquals(address.toString(), accountId); + assertEquals(address.getType(), Address.AddressType.ACCOUNT); + } + + @Test + public void testConstructorContractId() { + String contractId = "CA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUWDA"; + Address address = new Address(contractId); + assertEquals(address.toString(), contractId); + assertEquals(address.getType(), Address.AddressType.CONTRACT); + } + + @Test + public void testConstructorInvalidAddressThrows() { + String accountId = "GINVALID"; + try { + new Address(accountId); + fail(); + } catch (IllegalArgumentException e) { + Assert.assertEquals("Unsupported address type", e.getMessage()); + } + } + + @Test + public void testConstructorSecretThrows() { + String secret = "SBUIAXRYKAEJWBSJZYE6P4N4X4ATXP5GAFK5TZ6SKKQ6TS4MLX6G6E4M"; + try { + new Address(secret); + fail(); + } catch (IllegalArgumentException e) { + Assert.assertEquals("Unsupported address type", e.getMessage()); + } + } + + @Test + public void testFromAccountByte() { + String accountId = "GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ"; + byte[] accountIdBytes = StrKey.decodeStellarAccountId(accountId); + Address address = Address.fromAccount(accountIdBytes); + assertEquals(address.toString(), accountId); + assertEquals(address.getType(), Address.AddressType.ACCOUNT); + } + + @Test + public void testFromContractByte() { + String contractId = "CA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUWDA"; + byte[] contractIdBytes = StrKey.decodeContractId(contractId); + Address address = Address.fromContract(contractIdBytes); + assertEquals(address.toString(), contractId); + assertEquals(address.getType(), Address.AddressType.CONTRACT); + } + + @Test + public void testToSCAddressAccount() throws IOException { + String accountId = "GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ"; + Address address = new Address(accountId); + SCAddress scAddress = address.toSCAddress(); + + String xdr = "AAAAAAAAAAA/DDS/k60NmXHQTMyQ9wVRHIOKrZc0pKL7DXoD/H/omg=="; + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + SCAddress expectScAddress = + SCAddress.decode(new XdrDataInputStream(new ByteArrayInputStream(bytes))); + assertEquals(scAddress, expectScAddress); + } + + @Test + public void testToSCAddressContract() throws IOException { + String contract = "CA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUWDA"; + Address address = new Address(contract); + SCAddress scAddress = address.toSCAddress(); + + String xdr = "AAAAAT8MNL+TrQ2ZcdBMzJD3BVEcg4qtlzSkovsNegP8f+ia"; + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + SCAddress expectScAddress = + SCAddress.decode(new XdrDataInputStream(new ByteArrayInputStream(bytes))); + assertEquals(scAddress, expectScAddress); + } + + @Test + public void testFromSCAddressAccount() throws IOException { + String xdr = "AAAAAAAAAAA/DDS/k60NmXHQTMyQ9wVRHIOKrZc0pKL7DXoD/H/omg=="; + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + SCAddress scAddress = SCAddress.decode(new XdrDataInputStream(new ByteArrayInputStream(bytes))); + + Address address = Address.fromSCAddress(scAddress); + String accountId = "GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ"; + assertEquals(address.toString(), accountId); + assertEquals(address.getType(), Address.AddressType.ACCOUNT); + } + + @Test + public void testFromSCAddressContract() throws IOException { + String xdr = "AAAAAT8MNL+TrQ2ZcdBMzJD3BVEcg4qtlzSkovsNegP8f+ia"; + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + SCAddress scAddress = SCAddress.decode(new XdrDataInputStream(new ByteArrayInputStream(bytes))); + + Address address = Address.fromSCAddress(scAddress); + String contract = "CA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUWDA"; + assertEquals(address.toString(), contract); + assertEquals(address.getType(), Address.AddressType.CONTRACT); + } + + @Test + public void testToSCVal() throws IOException { + String contract = "CA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUWDA"; + Address address = new Address(contract); + SCVal scVal = address.toSCVal(); + + String xdr = "AAAAEgAAAAE/DDS/k60NmXHQTMyQ9wVRHIOKrZc0pKL7DXoD/H/omg=="; + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + SCVal expectSCVal = SCVal.decode(new XdrDataInputStream(new ByteArrayInputStream(bytes))); + assertEquals(scVal, expectSCVal); + } + + @Test + public void testFromSCVal() throws IOException { + String xdr = "AAAAEgAAAAE/DDS/k60NmXHQTMyQ9wVRHIOKrZc0pKL7DXoD/H/omg=="; + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + SCVal scVal = SCVal.decode(new XdrDataInputStream(new ByteArrayInputStream(bytes))); + + Address address = Address.fromSCVal(scVal); + String contract = "CA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUWDA"; + assertEquals(address.toString(), contract); + assertEquals(address.getType(), Address.AddressType.CONTRACT); + } + + @Test + public void testToStringAccountId() { + String accountId = "GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ"; + Address address = new Address(accountId); + assertEquals(address.toString(), accountId); + } + + @Test + public void testToStringContractId() { + String contractId = "CA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUWDA"; + Address address = new Address(contractId); + assertEquals(address.toString(), contractId); + } +} diff --git a/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java b/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java new file mode 100644 index 000000000..7b08fe9dd --- /dev/null +++ b/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java @@ -0,0 +1,258 @@ +package org.stellar.sdk; + +import static org.junit.Assert.*; + +import java.util.Collections; +import org.junit.Test; +import org.stellar.sdk.xdr.*; + +public class InvokeHostFunctionOperationTest { + CreateContractArgs createContractArgs = + new CreateContractArgs.Builder() + .contractIDPreimage( + new ContractIDPreimage.Builder() + .discriminant(ContractIDPreimageType.CONTRACT_ID_PREIMAGE_FROM_ADDRESS) + .fromAddress( + new ContractIDPreimage.ContractIDPreimageFromAddress.Builder() + .address( + new Address( + "GB7TAYRUZGE6TVT7NHP5SMIZRNQA6PLM423EYISAOAP3MKYIQMVYP2JO") + .toSCAddress()) + .salt(new Uint256(new byte[32])) + .build()) + .build()) + .executable( + new ContractExecutable.Builder() + .discriminant(ContractExecutableType.CONTRACT_EXECUTABLE_TOKEN) + .build()) + .build(); + + @Test + public void testConstructorsFromHostFunction() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + HostFunction hostFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + InvokeHostFunctionOperation invokeHostFunctionOperation = + InvokeHostFunctionOperation.builder() + .hostFunction(hostFunction) + .sourceAccount(source) + .build(); + assertEquals(invokeHostFunctionOperation.getHostFunction(), hostFunction); + assertTrue(invokeHostFunctionOperation.getAuth().isEmpty()); + String expectXdr = + "AAAAAQAAAAAk4TTtavBWsGnEN3KxHw4Ohwi22ZJHWi8hlamN5pm0TgAAABgAAAABAAAAAAAAAAAAAAAAfzBiNMmJ6dZ/ad/ZMRmLYA89bOa2TCJAcB+2KwiDK4cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA"; + assertEquals(expectXdr, invokeHostFunctionOperation.toXdrBase64()); + } + + @Test + public void testConstructorsFromHostFunctionAndSorobanAuthorizationEntries() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + HostFunction hostFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + SorobanAuthorizationEntry auth = + new SorobanAuthorizationEntry.Builder() + .credentials( + new SorobanCredentials.Builder() + .discriminant(SorobanCredentialsType.SOROBAN_CREDENTIALS_SOURCE_ACCOUNT) + .build()) + .rootInvocation( + new SorobanAuthorizedInvocation.Builder() + .subInvocations(new SorobanAuthorizedInvocation[] {}) + .function( + new SorobanAuthorizedFunction.Builder() + .discriminant( + SorobanAuthorizedFunctionType + .SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN) + .createContractHostFn(createContractArgs) + .build()) + .build()) + .build(); + InvokeHostFunctionOperation invokeHostFunctionOperation = + InvokeHostFunctionOperation.builder() + .hostFunction(hostFunction) + .auth(Collections.singletonList(auth)) + .sourceAccount(source) + .build(); + invokeHostFunctionOperation.setSourceAccount(source); + assertEquals(invokeHostFunctionOperation.getHostFunction(), hostFunction); + assertEquals(invokeHostFunctionOperation.getAuth(), Collections.singletonList(auth)); + String expectXdr = + "AAAAAQAAAAAk4TTtavBWsGnEN3KxHw4Ohwi22ZJHWi8hlamN5pm0TgAAABgAAAABAAAAAAAAAAAAAAAAfzBiNMmJ6dZ/ad/ZMRmLYA89bOa2TCJAcB+2KwiDK4cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAB/MGI0yYnp1n9p39kxGYtgDz1s5rZMIkBwH7YrCIMrhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAA="; + assertEquals(expectXdr, invokeHostFunctionOperation.toXdrBase64()); + } + + @Test + public void testFromXdr() { + HostFunction hostFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + InvokeHostFunctionOperation originOp = + InvokeHostFunctionOperation.builder().hostFunction(hostFunction).build(); + org.stellar.sdk.xdr.Operation xdrObject = originOp.toXdr(); + Operation restartOp = Operation.fromXdr(xdrObject); + assertEquals(restartOp, originOp); + } + + @Test + public void testEquals() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + HostFunction hostFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + InvokeHostFunctionOperation operation1 = + InvokeHostFunctionOperation.builder() + .hostFunction(hostFunction) + .sourceAccount(source) + .build(); + InvokeHostFunctionOperation operation2 = + InvokeHostFunctionOperation.builder() + .hostFunction(hostFunction) + .sourceAccount(source) + .build(); + assertEquals(operation1, operation2); + } + + @Test + public void testNotEqualsHostFunction() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + HostFunction hostFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + InvokeHostFunctionOperation operation1 = + InvokeHostFunctionOperation.builder() + .hostFunction(hostFunction) + .sourceAccount(source) + .build(); + + CreateContractArgs createContractArgs2 = + new CreateContractArgs.Builder() + .contractIDPreimage( + new ContractIDPreimage.Builder() + .discriminant(ContractIDPreimageType.CONTRACT_ID_PREIMAGE_FROM_ADDRESS) + .fromAddress( + new ContractIDPreimage.ContractIDPreimageFromAddress.Builder() + .address( + new Address( + "GAHJJJKMOKYE4RVPZEWZTKH5FVI4PA3VL7GK2LFNUBSGBV6OJP7TQSLX") + .toSCAddress()) + .salt(new Uint256(new byte[32])) + .build()) + .build()) + .executable( + new ContractExecutable.Builder() + .discriminant(ContractExecutableType.CONTRACT_EXECUTABLE_TOKEN) + .build()) + .build(); + HostFunction hostFunction2 = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs2) + .build(); + InvokeHostFunctionOperation operation2 = + InvokeHostFunctionOperation.builder() + .hostFunction(hostFunction2) + .sourceAccount(source) + .build(); + assertNotEquals(operation1, operation2); + } + + @Test + public void testNotEqualsAuth() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + HostFunction hostFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + SorobanAuthorizationEntry auth1 = + new SorobanAuthorizationEntry.Builder() + .credentials( + new SorobanCredentials.Builder() + .discriminant(SorobanCredentialsType.SOROBAN_CREDENTIALS_ADDRESS) + .address( + new SorobanAddressCredentials.Builder() + .address( + new Address( + "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW") + .toSCAddress()) + .nonce(new Int64(123123432L)) + .signatureExpirationLedger(new Uint32(10)) + .signatureArgs(new SCVec(new SCVal[] {})) + .build()) + .build()) + .rootInvocation( + new SorobanAuthorizedInvocation.Builder() + .subInvocations(new SorobanAuthorizedInvocation[] {}) + .function( + new SorobanAuthorizedFunction.Builder() + .discriminant( + SorobanAuthorizedFunctionType + .SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN) + .createContractHostFn(createContractArgs) + .build()) + .build()) + .build(); + + SorobanAuthorizationEntry auth2 = + new SorobanAuthorizationEntry.Builder() + .credentials( + new SorobanCredentials.Builder() + .discriminant(SorobanCredentialsType.SOROBAN_CREDENTIALS_SOURCE_ACCOUNT) + .build()) + .rootInvocation( + new SorobanAuthorizedInvocation.Builder() + .subInvocations(new SorobanAuthorizedInvocation[] {}) + .function( + new SorobanAuthorizedFunction.Builder() + .discriminant( + SorobanAuthorizedFunctionType + .SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN) + .createContractHostFn(createContractArgs) + .build()) + .build()) + .build(); + InvokeHostFunctionOperation operation1 = + InvokeHostFunctionOperation.builder() + .hostFunction(hostFunction) + .auth(Collections.singletonList(auth1)) + .sourceAccount(source) + .build(); + InvokeHostFunctionOperation operation2 = + InvokeHostFunctionOperation.builder() + .hostFunction(hostFunction) + .auth(Collections.singletonList(auth2)) + .sourceAccount(source) + .build(); + assertNotEquals(operation1, operation2); + } + + @Test + public void testNotEqualsSource() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + HostFunction hostFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + InvokeHostFunctionOperation operation1 = + InvokeHostFunctionOperation.builder() + .hostFunction(hostFunction) + .sourceAccount(source) + .build(); + InvokeHostFunctionOperation operation2 = + InvokeHostFunctionOperation.builder().hostFunction(hostFunction).build(); + assertNotEquals(operation1, operation2); + } +} diff --git a/src/test/java/org/stellar/sdk/TransactionBuilderTest.java b/src/test/java/org/stellar/sdk/TransactionBuilderTest.java index dee0d8df4..fb1e713d0 100644 --- a/src/test/java/org/stellar/sdk/TransactionBuilderTest.java +++ b/src/test/java/org/stellar/sdk/TransactionBuilderTest.java @@ -1,22 +1,13 @@ package org.stellar.sdk; import static com.google.common.collect.Lists.newArrayList; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.Assert.*; import com.google.common.io.BaseEncoding; import java.io.ByteArrayInputStream; import java.io.IOException; import org.junit.Test; -import org.stellar.sdk.xdr.Int64; -import org.stellar.sdk.xdr.PreconditionsV2; -import org.stellar.sdk.xdr.SequenceNumber; -import org.stellar.sdk.xdr.SignerKey; -import org.stellar.sdk.xdr.SignerKeyType; -import org.stellar.sdk.xdr.Uint256; -import org.stellar.sdk.xdr.XdrDataInputStream; +import org.stellar.sdk.xdr.*; public class TransactionBuilderTest { @@ -67,6 +58,10 @@ public void testBuilderSuccessTestnet() throws Exception { "AAAAAgAAAABexSIg06FtXzmFBQQtHZsrnyWxUzmthkBEhs/ktoeVYgAAAGQAClWjAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAADt4FJhvNwvlQqjuhc7bjLVyRf5e4K2QOzI0c6nWfVvEAAAAASoF8gAAAAAAAAAAAG2h5ViAAAAQLJxvwao6eyNHaDX2QFhgdqlxJUqkpgA03UUOqf4DwOXSV9GN4ZWut2uzRuza4DWyVGBEHmmnQX+SQKFo0Sb/wA=", transaction.toEnvelopeXdrBase64()); + org.stellar.sdk.xdr.Transaction.TransactionExt expectedExt = + new org.stellar.sdk.xdr.Transaction.TransactionExt.Builder().discriminant(0).build(); + assertEquals(expectedExt, transaction.toEnvelopeXdr().getV1().getTx().getExt()); + // Convert transaction to binary XDR and back again to make sure correctly xdr de/serialized. XdrDataInputStream is = new XdrDataInputStream( @@ -995,4 +990,143 @@ public void testNoNetworkSet() throws FormatException { assertTrue(e.getMessage().contains("Network cannot be null")); } } + + @Test + public void voidBuilderSorobanDataXdrString() { + KeyPair source = + KeyPair.fromSecretSeed("SCH27VUZZ6UAKB67BDNF6FA42YMBMQCBKXWGMFD5TZ6S5ZZCZFLRXKHS"); + KeyPair destination = + KeyPair.fromAccountId("GDW6AUTBXTOC7FIKUO5BOO3OGLK4SF7ZPOBLMQHMZDI45J2Z6VXRB5NR"); + + LedgerKey ledgerKey = + new LedgerKey.Builder() + .discriminant(LedgerEntryType.ACCOUNT) + .account( + new LedgerKey.LedgerKeyAccount.Builder() + .accountID( + KeyPair.fromAccountId( + "GB7TAYRUZGE6TVT7NHP5SMIZRNQA6PLM423EYISAOAP3MKYIQMVYP2JO") + .getXdrAccountId()) + .build()) + .build(); + SorobanTransactionData sorobanData = + new SorobanTransactionData.Builder() + .resources( + new SorobanResources.Builder() + .footprint( + new LedgerFootprint.Builder() + .readOnly(new LedgerKey[] {ledgerKey}) + .readWrite(new LedgerKey[] {}) + .build()) + .extendedMetaDataSizeBytes(new Uint32(216)) + .readBytes(new Uint32(699)) + .writeBytes(new Uint32(0)) + .instructions(new Uint32(34567)) + .build()) + .refundableFee(new Int64(100L)) + .ext(new ExtensionPoint.Builder().discriminant(0).build()) + .build(); + + long sequenceNumber = 2908908335136768L; + Account account = new Account(source.getAccountId(), sequenceNumber); + Transaction transaction = + new TransactionBuilder(AccountConverter.enableMuxed(), account, Network.TESTNET) + .addOperation( + new CreateAccountOperation.Builder(destination.getAccountId(), "2000").build()) + .setTimeout(TransactionPreconditions.TIMEOUT_INFINITE) + .setBaseFee(Transaction.MIN_BASE_FEE) + .setSorobanData(sorobanData) + .build(); + + assertEquals(sorobanData, transaction.getSorobanData()); + org.stellar.sdk.xdr.Transaction.TransactionExt expectedExt = + new org.stellar.sdk.xdr.Transaction.TransactionExt.Builder() + .discriminant(1) + .sorobanData(sorobanData) + .build(); + assertEquals(expectedExt, transaction.toEnvelopeXdr().getV1().getTx().getExt()); + } + + @Test + public void voidBuilderSorobanDataXdrObject() { + KeyPair source = + KeyPair.fromSecretSeed("SCH27VUZZ6UAKB67BDNF6FA42YMBMQCBKXWGMFD5TZ6S5ZZCZFLRXKHS"); + KeyPair destination = + KeyPair.fromAccountId("GDW6AUTBXTOC7FIKUO5BOO3OGLK4SF7ZPOBLMQHMZDI45J2Z6VXRB5NR"); + + LedgerKey ledgerKey = + new LedgerKey.Builder() + .discriminant(LedgerEntryType.ACCOUNT) + .account( + new LedgerKey.LedgerKeyAccount.Builder() + .accountID( + KeyPair.fromAccountId( + "GB7TAYRUZGE6TVT7NHP5SMIZRNQA6PLM423EYISAOAP3MKYIQMVYP2JO") + .getXdrAccountId()) + .build()) + .build(); + SorobanTransactionData sorobanData = + new SorobanTransactionData.Builder() + .resources( + new SorobanResources.Builder() + .footprint( + new LedgerFootprint.Builder() + .readOnly(new LedgerKey[] {ledgerKey}) + .readWrite(new LedgerKey[] {}) + .build()) + .extendedMetaDataSizeBytes(new Uint32(216)) + .readBytes(new Uint32(699)) + .writeBytes(new Uint32(0)) + .instructions(new Uint32(34567)) + .build()) + .refundableFee(new Int64(100L)) + .ext(new ExtensionPoint.Builder().discriminant(0).build()) + .build(); + String sorobanDataString = Util.xdrToSorobanTransactionData(sorobanData); + + CreateContractArgs createContractArgs = + new CreateContractArgs.Builder() + .contractIDPreimage( + new ContractIDPreimage.Builder() + .discriminant(ContractIDPreimageType.CONTRACT_ID_PREIMAGE_FROM_ADDRESS) + .fromAddress( + new ContractIDPreimage.ContractIDPreimageFromAddress.Builder() + .address( + new Address( + "GB7TAYRUZGE6TVT7NHP5SMIZRNQA6PLM423EYISAOAP3MKYIQMVYP2JO") + .toSCAddress()) + .salt(new Uint256(new byte[32])) + .build()) + .build()) + .executable( + new ContractExecutable.Builder() + .discriminant(ContractExecutableType.CONTRACT_EXECUTABLE_TOKEN) + .build()) + .build(); + HostFunction hostFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + InvokeHostFunctionOperation invokeHostFunctionOperation = + InvokeHostFunctionOperation.builder().hostFunction(hostFunction).build(); + + long sequenceNumber = 2908908335136768L; + Account account = new Account(source.getAccountId(), sequenceNumber); + Transaction transaction = + new TransactionBuilder(AccountConverter.enableMuxed(), account, Network.TESTNET) + .addOperation(invokeHostFunctionOperation) + .setTimeout(TransactionPreconditions.TIMEOUT_INFINITE) + .setBaseFee(Transaction.MIN_BASE_FEE) + .setSorobanData(sorobanDataString) + .build(); + + assertEquals(sorobanData, transaction.getSorobanData()); + org.stellar.sdk.xdr.Transaction.TransactionExt expectedExt = + new org.stellar.sdk.xdr.Transaction.TransactionExt.Builder() + .discriminant(1) + .sorobanData(sorobanData) + .build(); + assertEquals(expectedExt, transaction.toEnvelopeXdr().getV1().getTx().getExt()); + } } diff --git a/src/test/java/org/stellar/sdk/TransactionTest.java b/src/test/java/org/stellar/sdk/TransactionTest.java index 3e423e253..e8cd7e432 100644 --- a/src/test/java/org/stellar/sdk/TransactionTest.java +++ b/src/test/java/org/stellar/sdk/TransactionTest.java @@ -12,10 +12,7 @@ import java.util.ArrayList; import java.util.Arrays; import org.junit.Test; -import org.stellar.sdk.xdr.DecoratedSignature; -import org.stellar.sdk.xdr.EnvelopeType; -import org.stellar.sdk.xdr.SignerKey; -import org.stellar.sdk.xdr.XdrDataInputStream; +import org.stellar.sdk.xdr.*; public class TransactionTest { @@ -41,6 +38,7 @@ public void testParseV0Transaction() throws FormatException, IOException { }, null, new TransactionPreconditions(null, null, 0, 0, new ArrayList(), null), + null, Network.PUBLIC); transaction.setEnvelopeType(EnvelopeType.ENVELOPE_TYPE_TX_V0); @@ -87,6 +85,7 @@ public void testAddingSignaturesDirectly() { }, null, new TransactionPreconditions(null, null, 0, 0, new ArrayList(), null), + null, Network.PUBLIC); assertEquals(0, transaction.getSignatures().size()); @@ -124,6 +123,7 @@ public void testSha256HashSigning() throws FormatException { }, null, new TransactionPreconditions(null, null, 0, 0, new ArrayList(), null), + null, Network.PUBLIC); byte[] preimage = new byte[64]; @@ -159,6 +159,7 @@ public void testToBase64EnvelopeXdrBuilderNoSignatures() throws FormatException, }, null, new TransactionPreconditions(null, null, 0, 0, new ArrayList(), null), + null, Network.TESTNET); Transaction parsed = @@ -170,4 +171,87 @@ public void testToBase64EnvelopeXdrBuilderNoSignatures() throws FormatException, "AAAAAgAAAABexSIg06FtXzmFBQQtHZsrnyWxUzmthkBEhs/ktoeVYgAAAGQAClWjAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAO3gUmG83C+VCqO6FztuMtXJF/l7grZA7MjRzqdZ9W8QAAAABKgXyAAAAAAAAAAAAA==", transaction.toEnvelopeXdrBase64()); } + + @Test + public void testConstructorWithSorobanData() throws IOException { + KeyPair source = + KeyPair.fromSecretSeed("SCH27VUZZ6UAKB67BDNF6FA42YMBMQCBKXWGMFD5TZ6S5ZZCZFLRXKHS"); + + Account account = new Account(source.getAccountId(), 2908908335136768L); + LedgerKey ledgerKey = + new LedgerKey.Builder() + .discriminant(LedgerEntryType.ACCOUNT) + .account( + new LedgerKey.LedgerKeyAccount.Builder() + .accountID( + KeyPair.fromAccountId( + "GB7TAYRUZGE6TVT7NHP5SMIZRNQA6PLM423EYISAOAP3MKYIQMVYP2JO") + .getXdrAccountId()) + .build()) + .build(); + SorobanTransactionData sorobanData = + new SorobanTransactionData.Builder() + .resources( + new SorobanResources.Builder() + .footprint( + new LedgerFootprint.Builder() + .readOnly(new LedgerKey[] {ledgerKey}) + .readWrite(new LedgerKey[] {}) + .build()) + .extendedMetaDataSizeBytes(new Uint32(216)) + .readBytes(new Uint32(699)) + .writeBytes(new Uint32(0)) + .instructions(new Uint32(34567)) + .build()) + .refundableFee(new Int64(100L)) + .ext(new ExtensionPoint.Builder().discriminant(0).build()) + .build(); + + CreateContractArgs createContractArgs = + new CreateContractArgs.Builder() + .contractIDPreimage( + new ContractIDPreimage.Builder() + .discriminant(ContractIDPreimageType.CONTRACT_ID_PREIMAGE_FROM_ADDRESS) + .fromAddress( + new ContractIDPreimage.ContractIDPreimageFromAddress.Builder() + .address( + new Address( + "GB7TAYRUZGE6TVT7NHP5SMIZRNQA6PLM423EYISAOAP3MKYIQMVYP2JO") + .toSCAddress()) + .salt(new Uint256(new byte[32])) + .build()) + .build()) + .executable( + new ContractExecutable.Builder() + .discriminant(ContractExecutableType.CONTRACT_EXECUTABLE_TOKEN) + .build()) + .build(); + HostFunction hostFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + InvokeHostFunctionOperation invokeHostFunctionOperation = + InvokeHostFunctionOperation.builder().hostFunction(hostFunction).build(); + Transaction transaction = + new Transaction( + AccountConverter.enableMuxed(), + account.getAccountId(), + Transaction.MIN_BASE_FEE, + account.getIncrementedSequenceNumber(), + new org.stellar.sdk.Operation[] {invokeHostFunctionOperation}, + null, + new TransactionPreconditions(null, null, 0, 0, new ArrayList(), null), + sorobanData, + Network.TESTNET); + + Transaction parsed = + (Transaction) + Transaction.fromEnvelopeXdr( + AccountConverter.enableMuxed(), transaction.toEnvelopeXdrBase64(), Network.TESTNET); + assertEquals(parsed, transaction); + String expectedXdr = + "AAAAAgAAAABexSIg06FtXzmFBQQtHZsrnyWxUzmthkBEhs/ktoeVYgAAAGQAClWjAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAQAAAAAAAAAAAAAAAH8wYjTJienWf2nf2TEZi2APPWzmtkwiQHAftisIgyuHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAfzBiNMmJ6dZ/ad/ZMRmLYA89bOa2TCJAcB+2KwiDK4cAAAAAAACHBwAAArsAAAAAAAAA2AAAAAAAAABkAAAAAA=="; + assertEquals(expectedXdr, transaction.toEnvelopeXdrBase64()); + } } diff --git a/src/test/java/org/stellar/sdk/UtilTest.java b/src/test/java/org/stellar/sdk/UtilTest.java new file mode 100644 index 000000000..1c46dcca1 --- /dev/null +++ b/src/test/java/org/stellar/sdk/UtilTest.java @@ -0,0 +1,45 @@ +package org.stellar.sdk; + +import static org.junit.Assert.assertEquals; +import static org.stellar.sdk.Util.xdrToSorobanTransactionData; + +import org.junit.Test; +import org.stellar.sdk.xdr.*; + +public class UtilTest { + @Test + public void testXdrToSorobanTransactionData() { + LedgerKey ledgerKey = + new LedgerKey.Builder() + .discriminant(LedgerEntryType.ACCOUNT) + .account( + new LedgerKey.LedgerKeyAccount.Builder() + .accountID( + KeyPair.fromAccountId( + "GB7TAYRUZGE6TVT7NHP5SMIZRNQA6PLM423EYISAOAP3MKYIQMVYP2JO") + .getXdrAccountId()) + .build()) + .build(); + SorobanTransactionData sorobanData = + new SorobanTransactionData.Builder() + .resources( + new SorobanResources.Builder() + .footprint( + new LedgerFootprint.Builder() + .readOnly(new LedgerKey[] {ledgerKey}) + .readWrite(new LedgerKey[] {}) + .build()) + .extendedMetaDataSizeBytes(new Uint32(216)) + .readBytes(new Uint32(699)) + .writeBytes(new Uint32(0)) + .instructions(new Uint32(34567)) + .build()) + .refundableFee(new Int64(100L)) + .ext(new ExtensionPoint.Builder().discriminant(0).build()) + .build(); + String data = xdrToSorobanTransactionData(sorobanData); + String expected = + "AAAAAAAAAAEAAAAAAAAAAH8wYjTJienWf2nf2TEZi2APPWzmtkwiQHAftisIgyuHAAAAAAAAhwcAAAK7AAAAAAAAANgAAAAAAAAAZA=="; + assertEquals(expected, data); + } +} diff --git a/src/test/java/org/stellar/sdk/responses/OperationDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/OperationDeserializerTest.java index 4864dac56..9bca0d33b 100644 --- a/src/test/java/org/stellar/sdk/responses/OperationDeserializerTest.java +++ b/src/test/java/org/stellar/sdk/responses/OperationDeserializerTest.java @@ -27,6 +27,7 @@ import org.stellar.sdk.responses.operations.CreateClaimableBalanceOperationResponse; import org.stellar.sdk.responses.operations.EndSponsoringFutureReservesOperationResponse; import org.stellar.sdk.responses.operations.InflationOperationResponse; +import org.stellar.sdk.responses.operations.InvokeHostFunctionOperationResponse; import org.stellar.sdk.responses.operations.LiquidityPoolDepositOperationResponse; import org.stellar.sdk.responses.operations.LiquidityPoolWithdrawOperationResponse; import org.stellar.sdk.responses.operations.ManageBuyOfferOperationResponse; @@ -1834,4 +1835,125 @@ public void testDeserializeCreateClaimableBalanceOperation() { operation.getClaimants().get(1).getPredicate().getClass(), Predicate.Unconditional.class); assertEquals(operation.getType(), "create_claimable_balance"); } + + @Test + public void testDeserializeInvokeHostFunctionOperation() { + String json = + "{\n" + + " \"_links\": {\n" + + " \"self\": {\n" + + " \"href\": \"http://127.0.0.1:8000/operations/2224793063425\"\n" + + " },\n" + + " \"transaction\": {\n" + + " \"href\": \"http://127.0.0.1:8000/transactions/4ef3d81fba4b7db959080e4894cb8b2575418b8da9aa484f6306a79a3f63de3d\"\n" + + " },\n" + + " \"effects\": {\n" + + " \"href\": \"http://127.0.0.1:8000/operations/2224793063425/effects\"\n" + + " },\n" + + " \"succeeds\": {\n" + + " \"href\": \"http://127.0.0.1:8000/effects?order=desc&cursor=2224793063425\"\n" + + " },\n" + + " \"precedes\": {\n" + + " \"href\": \"http://127.0.0.1:8000/effects?order=asc&cursor=2224793063425\"\n" + + " }\n" + + " },\n" + + " \"id\": \"2224793063425\",\n" + + " \"paging_token\": \"2224793063425\",\n" + + " \"transaction_successful\": true,\n" + + " \"source_account\": \"GDAT5HWTGIU4TSSZ4752OUC4SABDLTLZFRPZUJ3D6LKBNEPA7V2CIG54\",\n" + + " \"type\": \"invoke_host_function\",\n" + + " \"type_i\": 24,\n" + + " \"created_at\": \"2023-07-20T10:44:56Z\",\n" + + " \"transaction_hash\": \"4ef3d81fba4b7db959080e4894cb8b2575418b8da9aa484f6306a79a3f63de3d\",\n" + + " \"function\": \"HostFunctionTypeHostFunctionTypeInvokeContract\",\n" + + " \"parameters\": [\n" + + " {\n" + + " \"value\": \"AAAAEgAAAAGw7oy+G8a9SeTIE5E/EuJYl5JfwF0eZJWk8S7LmE7fwA==\",\n" + + " \"type\": \"Address\"\n" + + " },\n" + + " {\n" + + " \"value\": \"AAAADwAAAAh0cmFuc2Zlcg==\",\n" + + " \"type\": \"Sym\"\n" + + " },\n" + + " {\n" + + " \"value\": \"AAAAEgAAAAAAAAAAwT6e0zIpycpZ5/unUFyQAjXNeSxfmidj8tQWkeD9dCQ=\",\n" + + " \"type\": \"Address\"\n" + + " },\n" + + " {\n" + + " \"value\": \"AAAAEgAAAAAAAAAAWLfEosjyl6qPPSRxKB/fzOyv5I5WYzE+wY4Spz7KmKE=\",\n" + + " \"type\": \"Address\"\n" + + " },\n" + + " {\n" + + " \"value\": \"AAAACgAAAAAAAAAAAAAAASoF8gA=\",\n" + + " \"type\": \"I128\"\n" + + " }\n" + + " ],\n" + + " \"address\": \"\",\n" + + " \"salt\": \"\",\n" + + " \"asset_balance_changes\": [\n" + + " {\n" + + " \"asset_type\": \"credit_alphanum12\",\n" + + " \"asset_code\": \"Hello\",\n" + + " \"asset_issuer\": \"GDJKBIYIPBE2NC5XIZX6GCFZHVWFUA7ONMQUOOVTLIM3BESTI4BYADAN\",\n" + + " \"type\": \"transfer\",\n" + + " \"from\": \"GDAT5HWTGIU4TSSZ4752OUC4SABDLTLZFRPZUJ3D6LKBNEPA7V2CIG54\",\n" + + " \"to\": \"GBMLPRFCZDZJPKUPHUSHCKA737GOZL7ERZLGGMJ6YGHBFJZ6ZKMKCZTM\",\n" + + " \"amount\": \"500.0000000\"\n" + + " }\n" + + " ]\n" + + "}"; + + InvokeHostFunctionOperationResponse operation = + (InvokeHostFunctionOperationResponse) + GsonSingleton.getInstance().fromJson(json, OperationResponse.class); + assertEquals( + operation.getLinks().getSelf().getHref(), "http://127.0.0.1:8000/operations/2224793063425"); + assertEquals(operation.getId().longValue(), 2224793063425L); + assertEquals(operation.getPagingToken(), "2224793063425"); + // TODO: add transaction_successful field to the response + // assertEquals(operation.getTransactionSuccessful(), true); + assertEquals( + operation.getSourceAccount(), "GDAT5HWTGIU4TSSZ4752OUC4SABDLTLZFRPZUJ3D6LKBNEPA7V2CIG54"); + assertEquals(operation.getType(), "invoke_host_function"); + // TODO: add type_i field to the response + assertEquals(operation.getCreatedAt(), "2023-07-20T10:44:56Z"); + assertEquals( + operation.getTransactionHash(), + "4ef3d81fba4b7db959080e4894cb8b2575418b8da9aa484f6306a79a3f63de3d"); + assertEquals(operation.getFunction(), "HostFunctionTypeHostFunctionTypeInvokeContract"); + assertEquals(operation.getParameters().size(), 5); + assertEquals(operation.getParameters().get(0).getType(), "Address"); + assertEquals( + operation.getParameters().get(0).getValue(), + "AAAAEgAAAAGw7oy+G8a9SeTIE5E/EuJYl5JfwF0eZJWk8S7LmE7fwA=="); + assertEquals(operation.getParameters().get(1).getType(), "Sym"); + assertEquals(operation.getParameters().get(1).getValue(), "AAAADwAAAAh0cmFuc2Zlcg=="); + assertEquals(operation.getParameters().get(2).getType(), "Address"); + assertEquals( + operation.getParameters().get(2).getValue(), + "AAAAEgAAAAAAAAAAwT6e0zIpycpZ5/unUFyQAjXNeSxfmidj8tQWkeD9dCQ="); + assertEquals(operation.getParameters().get(3).getType(), "Address"); + assertEquals( + operation.getParameters().get(3).getValue(), + "AAAAEgAAAAAAAAAAWLfEosjyl6qPPSRxKB/fzOyv5I5WYzE+wY4Spz7KmKE="); + assertEquals(operation.getParameters().get(4).getType(), "I128"); + assertEquals(operation.getParameters().get(4).getValue(), "AAAACgAAAAAAAAAAAAAAASoF8gA="); + + assertEquals(operation.getAddress(), ""); + assertEquals(operation.getSalt(), ""); + assertEquals(operation.getAssetBalanceChanges().size(), 1); + assertEquals(operation.getAssetBalanceChanges().get(0).getAssetType(), "credit_alphanum12"); + assertEquals(operation.getAssetBalanceChanges().get(0).getAssetCode(), "Hello"); + assertEquals( + operation.getAssetBalanceChanges().get(0).getAssetIssuer(), + "GDJKBIYIPBE2NC5XIZX6GCFZHVWFUA7ONMQUOOVTLIM3BESTI4BYADAN"); + assertEquals(operation.getAssetBalanceChanges().get(0).getType(), "transfer"); + assertEquals( + operation.getAssetBalanceChanges().get(0).getFrom(), + "GDAT5HWTGIU4TSSZ4752OUC4SABDLTLZFRPZUJ3D6LKBNEPA7V2CIG54"); + assertEquals( + operation.getAssetBalanceChanges().get(0).getTo(), + "GBMLPRFCZDZJPKUPHUSHCKA737GOZL7ERZLGGMJ6YGHBFJZ6ZKMKCZTM"); + assertEquals(operation.getAssetBalanceChanges().get(0).getAmount(), "500.0000000"); + } } diff --git a/xdr/Stellar-contract-config-setting.x b/xdr/Stellar-contract-config-setting.x new file mode 100644 index 000000000..00fa376ac --- /dev/null +++ b/xdr/Stellar-contract-config-setting.x @@ -0,0 +1,238 @@ +%#include "xdr/Stellar-types.h" + +namespace stellar { +// General “Soroban execution lane” settings +struct ConfigSettingContractExecutionLanesV0 +{ + // maximum number of Soroban transactions per ledger + uint32 ledgerMaxTxCount; +}; + +// "Compute" settings for contracts (instructions and memory). +struct ConfigSettingContractComputeV0 +{ + // Maximum instructions per ledger + int64 ledgerMaxInstructions; + // Maximum instructions per transaction + int64 txMaxInstructions; + // Cost of 10000 instructions + int64 feeRatePerInstructionsIncrement; + + // Memory limit per transaction. Unlike instructions, there is no fee + // for memory, just the limit. + uint32 txMemoryLimit; +}; + +// Ledger access settings for contracts. +struct ConfigSettingContractLedgerCostV0 +{ + // Maximum number of ledger entry read operations per ledger + uint32 ledgerMaxReadLedgerEntries; + // Maximum number of bytes that can be read per ledger + uint32 ledgerMaxReadBytes; + // Maximum number of ledger entry write operations per ledger + uint32 ledgerMaxWriteLedgerEntries; + // Maximum number of bytes that can be written per ledger + uint32 ledgerMaxWriteBytes; + + // Maximum number of ledger entry read operations per transaction + uint32 txMaxReadLedgerEntries; + // Maximum number of bytes that can be read per transaction + uint32 txMaxReadBytes; + // Maximum number of ledger entry write operations per transaction + uint32 txMaxWriteLedgerEntries; + // Maximum number of bytes that can be written per transaction + uint32 txMaxWriteBytes; + + int64 feeReadLedgerEntry; // Fee per ledger entry read + int64 feeWriteLedgerEntry; // Fee per ledger entry write + + int64 feeRead1KB; // Fee for reading 1KB + int64 feeWrite1KB; // Fee for writing 1KB + + // Bucket list fees grow slowly up to that size + int64 bucketListSizeBytes; + // Fee rate in stroops when the bucket list is empty + int64 bucketListFeeRateLow; + // Fee rate in stroops when the bucket list reached bucketListSizeBytes + int64 bucketListFeeRateHigh; + // Rate multiplier for any additional data past the first bucketListSizeBytes + uint32 bucketListGrowthFactor; +}; + +// Historical data (pushed to core archives) settings for contracts. +struct ConfigSettingContractHistoricalDataV0 +{ + int64 feeHistorical1KB; // Fee for storing 1KB in archives +}; + +// Meta data (pushed to downstream systems) settings for contracts. +struct ConfigSettingContractMetaDataV0 +{ + // Maximum size of extended meta data produced by a transaction + uint32 txMaxExtendedMetaDataSizeBytes; + // Fee for generating 1KB of extended meta data + int64 feeExtendedMetaData1KB; +}; + +// Bandwidth related data settings for contracts +struct ConfigSettingContractBandwidthV0 +{ + // Maximum size in bytes to propagate per ledger + uint32 ledgerMaxPropagateSizeBytes; + // Maximum size in bytes for a transaction + uint32 txMaxSizeBytes; + + // Fee for propagating 1KB of data + int64 feePropagateData1KB; +}; + +enum ContractCostType { + // Cost of running 1 wasm instruction + WasmInsnExec = 0, + // Cost of growing wasm linear memory by 1 page + WasmMemAlloc = 1, + // Cost of allocating a chuck of host memory (in bytes) + HostMemAlloc = 2, + // Cost of copying a chuck of bytes into a pre-allocated host memory + HostMemCpy = 3, + // Cost of comparing two slices of host memory + HostMemCmp = 4, + // Cost of a host function invocation, not including the actual work done by the function + InvokeHostFunction = 5, + // Cost of visiting a host object from the host object storage + // Only thing to make sure is the guest can't visitObject repeatly without incurring some charges elsewhere. + VisitObject = 6, + // Tracks a single Val (RawVal or primative Object like U64) <=> ScVal + // conversion cost. Most of these Val counterparts in ScVal (except e.g. + // Symbol) consumes a single int64 and therefore is a constant overhead. + ValXdrConv = 7, + // Cost of serializing an xdr object to bytes + ValSer = 8, + // Cost of deserializing an xdr object from bytes + ValDeser = 9, + // Cost of computing the sha256 hash from bytes + ComputeSha256Hash = 10, + // Cost of computing the ed25519 pubkey from bytes + ComputeEd25519PubKey = 11, + // Cost of accessing an entry in a Map. + MapEntry = 12, + // Cost of accessing an entry in a Vec + VecEntry = 13, + // Cost of guarding a frame, which involves pushing and poping a frame and capturing a rollback point. + GuardFrame = 14, + // Cost of verifying ed25519 signature of a payload. + VerifyEd25519Sig = 15, + // Cost of reading a slice of vm linear memory + VmMemRead = 16, + // Cost of writing to a slice of vm linear memory + VmMemWrite = 17, + // Cost of instantiation a VM from wasm bytes code. + VmInstantiation = 18, + // Cost of instantiation a VM from a cached state. + VmCachedInstantiation = 19, + // Roundtrip cost of invoking a VM function from the host. + InvokeVmFunction = 20, + // Cost of charging a value to the budgeting system. + ChargeBudget = 21, + // Cost of computing a keccak256 hash from bytes. + ComputeKeccak256Hash = 22, + // Cost of computing an ECDSA secp256k1 pubkey from bytes. + ComputeEcdsaSecp256k1Key = 23, + // Cost of computing an ECDSA secp256k1 signature from bytes. + ComputeEcdsaSecp256k1Sig = 24, + // Cost of recovering an ECDSA secp256k1 key from a signature. + RecoverEcdsaSecp256k1Key = 25, + // Cost of int256 addition (`+`) and subtraction (`-`) operations + Int256AddSub = 26, + // Cost of int256 multiplication (`*`) operation + Int256Mul = 27, + // Cost of int256 division (`/`) operation + Int256Div = 28, + // Cost of int256 power (`exp`) operation + Int256Pow = 29, + // Cost of int256 shift (`shl`, `shr`) operation + Int256Shift = 30 +}; + +struct ContractCostParamEntry { + // use `ext` to add more terms (e.g. higher order polynomials) in the future + ExtensionPoint ext; + + int64 constTerm; + int64 linearTerm; +}; + +struct StateExpirationSettings { + uint32 maxEntryExpiration; + uint32 minTempEntryExpiration; + uint32 minPersistentEntryExpiration; + uint32 autoBumpLedgers; + + // rent_fee = wfee_rate_average / rent_rate_denominator_for_type + int64 persistentRentRateDenominator; + int64 tempRentRateDenominator; + + // max number of entries that emit expiration meta in a single ledger + uint32 maxEntriesToExpire; + + // Number of snapshots to use when calculating average BucketList size + uint32 bucketListSizeWindowSampleSize; + + // Maximum number of bytes that we scan for eviction per ledger + uint64 evictionScanSize; +}; + +// limits the ContractCostParams size to 20kB +const CONTRACT_COST_COUNT_LIMIT = 1024; + +typedef ContractCostParamEntry ContractCostParams; + +// Identifiers of all the network settings. +enum ConfigSettingID +{ + CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES = 0, + CONFIG_SETTING_CONTRACT_COMPUTE_V0 = 1, + CONFIG_SETTING_CONTRACT_LEDGER_COST_V0 = 2, + CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0 = 3, + CONFIG_SETTING_CONTRACT_META_DATA_V0 = 4, + CONFIG_SETTING_CONTRACT_BANDWIDTH_V0 = 5, + CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS = 6, + CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES = 7, + CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES = 8, + CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES = 9, + CONFIG_SETTING_STATE_EXPIRATION = 10, + CONFIG_SETTING_CONTRACT_EXECUTION_LANES = 11, + CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW = 12 +}; + +union ConfigSettingEntry switch (ConfigSettingID configSettingID) +{ +case CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES: + uint32 contractMaxSizeBytes; +case CONFIG_SETTING_CONTRACT_COMPUTE_V0: + ConfigSettingContractComputeV0 contractCompute; +case CONFIG_SETTING_CONTRACT_LEDGER_COST_V0: + ConfigSettingContractLedgerCostV0 contractLedgerCost; +case CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0: + ConfigSettingContractHistoricalDataV0 contractHistoricalData; +case CONFIG_SETTING_CONTRACT_META_DATA_V0: + ConfigSettingContractMetaDataV0 contractMetaData; +case CONFIG_SETTING_CONTRACT_BANDWIDTH_V0: + ConfigSettingContractBandwidthV0 contractBandwidth; +case CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS: + ContractCostParams contractCostParamsCpuInsns; +case CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES: + ContractCostParams contractCostParamsMemBytes; +case CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES: + uint32 contractDataKeySizeBytes; +case CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES: + uint32 contractDataEntrySizeBytes; +case CONFIG_SETTING_STATE_EXPIRATION: + StateExpirationSettings stateExpirationSettings; +case CONFIG_SETTING_CONTRACT_EXECUTION_LANES: + ConfigSettingContractExecutionLanesV0 contractExecutionLanes; +case CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW: + uint64 bucketListSizeWindow<>; +}; +} diff --git a/xdr/Stellar-contract-env-meta.x b/xdr/Stellar-contract-env-meta.x new file mode 100644 index 000000000..330726de4 --- /dev/null +++ b/xdr/Stellar-contract-env-meta.x @@ -0,0 +1,23 @@ +// Copyright 2022 Stellar Development Foundation and contributors. Licensed +// under the Apache License, Version 2.0. See the COPYING file at the root +// of this distribution or at http://www.apache.org/licenses/LICENSE-2.0 + +// The contract spec XDR is highly experimental, incomplete, and still being +// iterated on. Breaking changes expected. + +% #include "xdr/Stellar-types.h" +namespace stellar +{ + +enum SCEnvMetaKind +{ + SC_ENV_META_KIND_INTERFACE_VERSION = 0 +}; + +union SCEnvMetaEntry switch (SCEnvMetaKind kind) +{ +case SC_ENV_META_KIND_INTERFACE_VERSION: + uint64 interfaceVersion; +}; + +} diff --git a/xdr/Stellar-contract-meta.x b/xdr/Stellar-contract-meta.x new file mode 100644 index 000000000..16eb5f9e2 --- /dev/null +++ b/xdr/Stellar-contract-meta.x @@ -0,0 +1,29 @@ +// Copyright 2022 Stellar Development Foundation and contributors. Licensed +// under the Apache License, Version 2.0. See the COPYING file at the root +// of this distribution or at http://www.apache.org/licenses/LICENSE-2.0 + +// The contract meta XDR is highly experimental, incomplete, and still being +// iterated on. Breaking changes expected. + +% #include "xdr/Stellar-types.h" +namespace stellar +{ + +struct SCMetaV0 +{ + string key<>; + string val<>; +}; + +enum SCMetaKind +{ + SC_META_V0 = 0 +}; + +union SCMetaEntry switch (SCMetaKind kind) +{ +case SC_META_V0: + SCMetaV0 v0; +}; + +} diff --git a/xdr/Stellar-contract-spec.x b/xdr/Stellar-contract-spec.x new file mode 100644 index 000000000..a3145896c --- /dev/null +++ b/xdr/Stellar-contract-spec.x @@ -0,0 +1,250 @@ +// Copyright 2022 Stellar Development Foundation and contributors. Licensed +// under the Apache License, Version 2.0. See the COPYING file at the root +// of this distribution or at http://www.apache.org/licenses/LICENSE-2.0 + +// The contract Contractspec XDR is highly experimental, incomplete, and still being +// iterated on. Breaking changes expected. + +% #include "xdr/Stellar-types.h" +% #include "xdr/Stellar-contract.h" +namespace stellar +{ + +const SC_SPEC_DOC_LIMIT = 1024; + +enum SCSpecType +{ + SC_SPEC_TYPE_VAL = 0, + + // Types with no parameters. + SC_SPEC_TYPE_BOOL = 1, + SC_SPEC_TYPE_VOID = 2, + SC_SPEC_TYPE_ERROR = 3, + SC_SPEC_TYPE_U32 = 4, + SC_SPEC_TYPE_I32 = 5, + SC_SPEC_TYPE_U64 = 6, + SC_SPEC_TYPE_I64 = 7, + SC_SPEC_TYPE_TIMEPOINT = 8, + SC_SPEC_TYPE_DURATION = 9, + SC_SPEC_TYPE_U128 = 10, + SC_SPEC_TYPE_I128 = 11, + SC_SPEC_TYPE_U256 = 12, + SC_SPEC_TYPE_I256 = 13, + SC_SPEC_TYPE_BYTES = 14, + SC_SPEC_TYPE_STRING = 16, + SC_SPEC_TYPE_SYMBOL = 17, + SC_SPEC_TYPE_ADDRESS = 19, + + // Types with parameters. + SC_SPEC_TYPE_OPTION = 1000, + SC_SPEC_TYPE_RESULT = 1001, + SC_SPEC_TYPE_VEC = 1002, + SC_SPEC_TYPE_SET = 1003, + SC_SPEC_TYPE_MAP = 1004, + SC_SPEC_TYPE_TUPLE = 1005, + SC_SPEC_TYPE_BYTES_N = 1006, + + // User defined types. + SC_SPEC_TYPE_UDT = 2000 +}; + +struct SCSpecTypeOption +{ + SCSpecTypeDef valueType; +}; + +struct SCSpecTypeResult +{ + SCSpecTypeDef okType; + SCSpecTypeDef errorType; +}; + +struct SCSpecTypeVec +{ + SCSpecTypeDef elementType; +}; + +struct SCSpecTypeMap +{ + SCSpecTypeDef keyType; + SCSpecTypeDef valueType; +}; + +struct SCSpecTypeSet +{ + SCSpecTypeDef elementType; +}; + +struct SCSpecTypeTuple +{ + SCSpecTypeDef valueTypes<12>; +}; + +struct SCSpecTypeBytesN +{ + uint32 n; +}; + +struct SCSpecTypeUDT +{ + string name<60>; +}; + +union SCSpecTypeDef switch (SCSpecType type) +{ +case SC_SPEC_TYPE_VAL: +case SC_SPEC_TYPE_BOOL: +case SC_SPEC_TYPE_VOID: +case SC_SPEC_TYPE_ERROR: +case SC_SPEC_TYPE_U32: +case SC_SPEC_TYPE_I32: +case SC_SPEC_TYPE_U64: +case SC_SPEC_TYPE_I64: +case SC_SPEC_TYPE_TIMEPOINT: +case SC_SPEC_TYPE_DURATION: +case SC_SPEC_TYPE_U128: +case SC_SPEC_TYPE_I128: +case SC_SPEC_TYPE_U256: +case SC_SPEC_TYPE_I256: +case SC_SPEC_TYPE_BYTES: +case SC_SPEC_TYPE_STRING: +case SC_SPEC_TYPE_SYMBOL: +case SC_SPEC_TYPE_ADDRESS: + void; +case SC_SPEC_TYPE_OPTION: + SCSpecTypeOption option; +case SC_SPEC_TYPE_RESULT: + SCSpecTypeResult result; +case SC_SPEC_TYPE_VEC: + SCSpecTypeVec vec; +case SC_SPEC_TYPE_MAP: + SCSpecTypeMap map; +case SC_SPEC_TYPE_SET: + SCSpecTypeSet set; +case SC_SPEC_TYPE_TUPLE: + SCSpecTypeTuple tuple; +case SC_SPEC_TYPE_BYTES_N: + SCSpecTypeBytesN bytesN; +case SC_SPEC_TYPE_UDT: + SCSpecTypeUDT udt; +}; + +struct SCSpecUDTStructFieldV0 +{ + string doc; + string name<30>; + SCSpecTypeDef type; +}; + +struct SCSpecUDTStructV0 +{ + string doc; + string lib<80>; + string name<60>; + SCSpecUDTStructFieldV0 fields<40>; +}; + +struct SCSpecUDTUnionCaseVoidV0 +{ + string doc; + string name<60>; +}; + +struct SCSpecUDTUnionCaseTupleV0 +{ + string doc; + string name<60>; + SCSpecTypeDef type<12>; +}; + +enum SCSpecUDTUnionCaseV0Kind +{ + SC_SPEC_UDT_UNION_CASE_VOID_V0 = 0, + SC_SPEC_UDT_UNION_CASE_TUPLE_V0 = 1 +}; + +union SCSpecUDTUnionCaseV0 switch (SCSpecUDTUnionCaseV0Kind kind) +{ +case SC_SPEC_UDT_UNION_CASE_VOID_V0: + SCSpecUDTUnionCaseVoidV0 voidCase; +case SC_SPEC_UDT_UNION_CASE_TUPLE_V0: + SCSpecUDTUnionCaseTupleV0 tupleCase; +}; + +struct SCSpecUDTUnionV0 +{ + string doc; + string lib<80>; + string name<60>; + SCSpecUDTUnionCaseV0 cases<50>; +}; + +struct SCSpecUDTEnumCaseV0 +{ + string doc; + string name<60>; + uint32 value; +}; + +struct SCSpecUDTEnumV0 +{ + string doc; + string lib<80>; + string name<60>; + SCSpecUDTEnumCaseV0 cases<50>; +}; + +struct SCSpecUDTErrorEnumCaseV0 +{ + string doc; + string name<60>; + uint32 value; +}; + +struct SCSpecUDTErrorEnumV0 +{ + string doc; + string lib<80>; + string name<60>; + SCSpecUDTErrorEnumCaseV0 cases<50>; +}; + +struct SCSpecFunctionInputV0 +{ + string doc; + string name<30>; + SCSpecTypeDef type; +}; + +struct SCSpecFunctionV0 +{ + string doc; + SCSymbol name; + SCSpecFunctionInputV0 inputs<10>; + SCSpecTypeDef outputs<1>; +}; + +enum SCSpecEntryKind +{ + SC_SPEC_ENTRY_FUNCTION_V0 = 0, + SC_SPEC_ENTRY_UDT_STRUCT_V0 = 1, + SC_SPEC_ENTRY_UDT_UNION_V0 = 2, + SC_SPEC_ENTRY_UDT_ENUM_V0 = 3, + SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0 = 4 +}; + +union SCSpecEntry switch (SCSpecEntryKind kind) +{ +case SC_SPEC_ENTRY_FUNCTION_V0: + SCSpecFunctionV0 functionV0; +case SC_SPEC_ENTRY_UDT_STRUCT_V0: + SCSpecUDTStructV0 udtStructV0; +case SC_SPEC_ENTRY_UDT_UNION_V0: + SCSpecUDTUnionV0 udtUnionV0; +case SC_SPEC_ENTRY_UDT_ENUM_V0: + SCSpecUDTEnumV0 udtEnumV0; +case SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0: + SCSpecUDTErrorEnumV0 udtErrorEnumV0; +}; + +} diff --git a/xdr/Stellar-contract.x b/xdr/Stellar-contract.x new file mode 100644 index 000000000..9867ce3cc --- /dev/null +++ b/xdr/Stellar-contract.x @@ -0,0 +1,260 @@ +// Copyright 2022 Stellar Development Foundation and contributors. Licensed +// under the Apache License, Version 2.0. See the COPYING file at the root +// of this distribution or at http://www.apache.org/licenses/LICENSE-2.0 + +% #include "xdr/Stellar-types.h" +namespace stellar +{ + +// We fix a maximum of 128 value types in the system for two reasons: we want to +// keep the codes relatively small (<= 8 bits) when bit-packing values into a +// u64 at the environment interface level, so that we keep many bits for +// payloads (small strings, small numeric values, object handles); and then we +// actually want to go one step further and ensure (for code-size) that our +// codes fit in a single ULEB128-code byte, which means we can only use 7 bits. +// +// We also reserve several type codes from this space because we want to _reuse_ +// the SCValType codes at the environment interface level (or at least not +// exceed its number-space) but there are more types at that level, assigned to +// optimizations/special case representations of values abstract at this level. + +enum SCValType +{ + SCV_BOOL = 0, + SCV_VOID = 1, + SCV_ERROR = 2, + + // 32 bits is the smallest type in WASM or XDR; no need for u8/u16. + SCV_U32 = 3, + SCV_I32 = 4, + + // 64 bits is naturally supported by both WASM and XDR also. + SCV_U64 = 5, + SCV_I64 = 6, + + // Time-related u64 subtypes with their own functions and formatting. + SCV_TIMEPOINT = 7, + SCV_DURATION = 8, + + // 128 bits is naturally supported by Rust and we use it for Soroban + // fixed-point arithmetic prices / balances / similar "quantities". These + // are represented in XDR as a pair of 2 u64s, unlike {u,i}256 which is + // represented as an array of 32 bytes. + SCV_U128 = 9, + SCV_I128 = 10, + + // 256 bits is the size of sha256 output, ed25519 keys, and the EVM machine + // word, so for interop use we include this even though it requires a small + // amount of Rust guest and/or host library code. + SCV_U256 = 11, + SCV_I256 = 12, + + // Bytes come in 3 flavors, 2 of which have meaningfully different + // formatting and validity-checking / domain-restriction. + SCV_BYTES = 13, + SCV_STRING = 14, + SCV_SYMBOL = 15, + + // Vecs and maps are just polymorphic containers of other ScVals. + SCV_VEC = 16, + SCV_MAP = 17, + + // Address is the universal identifier for contracts and classic + // accounts. + SCV_ADDRESS = 18, + + // The following are the internal SCVal variants that are not + // exposed to the contracts. + SCV_CONTRACT_INSTANCE = 19, + + // SCV_LEDGER_KEY_CONTRACT_INSTANCE and SCV_LEDGER_KEY_NONCE are unique + // symbolic SCVals used as the key for ledger entries for a contract's + // instance and an address' nonce, respectively. + SCV_LEDGER_KEY_CONTRACT_INSTANCE = 20, + SCV_LEDGER_KEY_NONCE = 21 +}; + +enum SCErrorType +{ + SCE_CONTRACT = 0, + SCE_WASM_VM = 1, + SCE_CONTEXT = 2, + SCE_STORAGE = 3, + SCE_OBJECT = 4, + SCE_CRYPTO = 5, + SCE_EVENTS = 6, + SCE_BUDGET = 7, + SCE_VALUE = 8, + SCE_AUTH = 9 +}; + +enum SCErrorCode +{ + SCEC_ARITH_DOMAIN = 0, // some arithmetic wasn't defined (overflow, divide-by-zero) + SCEC_INDEX_BOUNDS = 1, // something was indexed beyond its bounds + SCEC_INVALID_INPUT = 2, // user provided some otherwise-bad data + SCEC_MISSING_VALUE = 3, // some value was required but not provided + SCEC_EXISTING_VALUE = 4, // some value was provided where not allowed + SCEC_EXCEEDED_LIMIT = 5, // some arbitrary limit -- gas or otherwise -- was hit + SCEC_INVALID_ACTION = 6, // data was valid but action requested was not + SCEC_INTERNAL_ERROR = 7, // the internal state of the host was otherwise-bad + SCEC_UNEXPECTED_TYPE = 8, // some type wasn't as expected + SCEC_UNEXPECTED_SIZE = 9 // something's size wasn't as expected +}; + +struct SCError +{ + SCErrorType type; + SCErrorCode code; +}; + +struct UInt128Parts { + uint64 hi; + uint64 lo; +}; + +// A signed int128 has a high sign bit and 127 value bits. We break it into a +// signed high int64 (that carries the sign bit and the high 63 value bits) and +// a low unsigned uint64 that carries the low 64 bits. This will sort in +// generated code in the same order the underlying int128 sorts. +struct Int128Parts { + int64 hi; + uint64 lo; +}; + +struct UInt256Parts { + uint64 hi_hi; + uint64 hi_lo; + uint64 lo_hi; + uint64 lo_lo; +}; + +// A signed int256 has a high sign bit and 255 value bits. We break it into a +// signed high int64 (that carries the sign bit and the high 63 value bits) and +// three low unsigned `uint64`s that carry the lower bits. This will sort in +// generated code in the same order the underlying int256 sorts. +struct Int256Parts { + int64 hi_hi; + uint64 hi_lo; + uint64 lo_hi; + uint64 lo_lo; +}; + +enum ContractExecutableType +{ + CONTRACT_EXECUTABLE_WASM = 0, + CONTRACT_EXECUTABLE_TOKEN = 1 +}; + +union ContractExecutable switch (ContractExecutableType type) +{ +case CONTRACT_EXECUTABLE_WASM: + Hash wasm_hash; +case CONTRACT_EXECUTABLE_TOKEN: + void; +}; + +enum SCAddressType +{ + SC_ADDRESS_TYPE_ACCOUNT = 0, + SC_ADDRESS_TYPE_CONTRACT = 1 +}; + +union SCAddress switch (SCAddressType type) +{ +case SC_ADDRESS_TYPE_ACCOUNT: + AccountID accountId; +case SC_ADDRESS_TYPE_CONTRACT: + Hash contractId; +}; + +%struct SCVal; +%struct SCMapEntry; + +const SCSYMBOL_LIMIT = 32; + +typedef SCVal SCVec<>; +typedef SCMapEntry SCMap<>; + +typedef opaque SCBytes<>; +typedef string SCString<>; +typedef string SCSymbol; + +struct SCNonceKey { + int64 nonce; +}; + +struct SCContractInstance { + ContractExecutable executable; + SCMap* storage; +}; + +union SCVal switch (SCValType type) +{ + +case SCV_BOOL: + bool b; +case SCV_VOID: + void; +case SCV_ERROR: + SCError error; + +case SCV_U32: + uint32 u32; +case SCV_I32: + int32 i32; + +case SCV_U64: + uint64 u64; +case SCV_I64: + int64 i64; +case SCV_TIMEPOINT: + TimePoint timepoint; +case SCV_DURATION: + Duration duration; + +case SCV_U128: + UInt128Parts u128; +case SCV_I128: + Int128Parts i128; + +case SCV_U256: + UInt256Parts u256; +case SCV_I256: + Int256Parts i256; + +case SCV_BYTES: + SCBytes bytes; +case SCV_STRING: + SCString str; +case SCV_SYMBOL: + SCSymbol sym; + +// Vec and Map are recursive so need to live +// behind an option, due to xdrpp limitations. +case SCV_VEC: + SCVec *vec; +case SCV_MAP: + SCMap *map; + +case SCV_ADDRESS: + SCAddress address; + +// Special SCVals reserved for system-constructed contract-data +// ledger keys, not generally usable elsewhere. +case SCV_LEDGER_KEY_CONTRACT_INSTANCE: + void; +case SCV_LEDGER_KEY_NONCE: + SCNonceKey nonce_key; + +case SCV_CONTRACT_INSTANCE: + SCContractInstance instance; +}; + +struct SCMapEntry +{ + SCVal key; + SCVal val; +}; + +} diff --git a/xdr/Stellar-internal.x b/xdr/Stellar-internal.x new file mode 100644 index 000000000..73684db7a --- /dev/null +++ b/xdr/Stellar-internal.x @@ -0,0 +1,41 @@ +// Copyright 2022 Stellar Development Foundation and contributors. Licensed +// under the Apache License, Version 2.0. See the COPYING file at the root +// of this distribution or at http://www.apache.org/licenses/LICENSE-2.0 + +// This is for 'internal'-only messages that are not meant to be read/written +// by any other binaries besides a single Core instance. +%#include "xdr/Stellar-ledger.h" +%#include "xdr/Stellar-SCP.h" + +namespace stellar +{ +union StoredTransactionSet switch (int v) +{ +case 0: + TransactionSet txSet; +case 1: + GeneralizedTransactionSet generalizedTxSet; +}; + +struct PersistedSCPStateV0 +{ + SCPEnvelope scpEnvelopes<>; + SCPQuorumSet quorumSets<>; + StoredTransactionSet txSets<>; +}; + +struct PersistedSCPStateV1 +{ + // Tx sets are saved separately + SCPEnvelope scpEnvelopes<>; + SCPQuorumSet quorumSets<>; +}; + +union PersistedSCPState switch (int v) +{ +case 0: + PersistedSCPStateV0 v0; +case 1: + PersistedSCPStateV1 v1; +}; +} \ No newline at end of file diff --git a/xdr/Stellar-ledger-entries.x b/xdr/Stellar-ledger-entries.x index 3eb578f16..5eaccacc8 100644 --- a/xdr/Stellar-ledger-entries.x +++ b/xdr/Stellar-ledger-entries.x @@ -3,17 +3,16 @@ // of this distribution or at http://www.apache.org/licenses/LICENSE-2.0 %#include "xdr/Stellar-types.h" +%#include "xdr/Stellar-contract.h" +%#include "xdr/Stellar-contract-config-setting.h" namespace stellar { -typedef PublicKey AccountID; typedef opaque Thresholds[4]; typedef string string32<32>; typedef string string64<64>; typedef int64 SequenceNumber; -typedef uint64 TimePoint; -typedef uint64 Duration; typedef opaque DataValue<64>; typedef Hash PoolID; // SHA256(LiquidityPoolParameters) @@ -98,7 +97,10 @@ enum LedgerEntryType OFFER = 2, DATA = 3, CLAIMABLE_BALANCE = 4, - LIQUIDITY_POOL = 5 + LIQUIDITY_POOL = 5, + CONTRACT_DATA = 6, + CONTRACT_CODE = 7, + CONFIG_SETTING = 8 }; struct Signer @@ -491,6 +493,60 @@ struct LiquidityPoolEntry body; }; +enum ContractEntryBodyType { + DATA_ENTRY = 0, + EXPIRATION_EXTENSION = 1 +}; + +const MASK_CONTRACT_DATA_FLAGS_V20 = 0x1; + +enum ContractDataFlags { + // When set, the given entry does not recieve automatic expiration bumps + // on access. Note that entries can still be bumped manually via the footprint. + NO_AUTOBUMP = 0x1 +}; + +enum ContractDataDurability { + TEMPORARY = 0, + PERSISTENT = 1 +}; + +struct ContractDataEntry { + SCAddress contract; + SCVal key; + ContractDataDurability durability; + + union switch (ContractEntryBodyType bodyType) + { + case DATA_ENTRY: + struct + { + uint32 flags; + SCVal val; + } data; + case EXPIRATION_EXTENSION: + void; + } body; + + uint32 expirationLedgerSeq; +}; + +struct ContractCodeEntry { + ExtensionPoint ext; + + Hash hash; + union switch (ContractEntryBodyType bodyType) + { + case DATA_ENTRY: + opaque code<>; + case EXPIRATION_EXTENSION: + void; + } body; + + uint32 expirationLedgerSeq; +}; + + struct LedgerEntryExtensionV1 { SponsorshipDescriptor sponsoringID; @@ -521,6 +577,12 @@ struct LedgerEntry ClaimableBalanceEntry claimableBalance; case LIQUIDITY_POOL: LiquidityPoolEntry liquidityPool; + case CONTRACT_DATA: + ContractDataEntry contractData; + case CONTRACT_CODE: + ContractCodeEntry contractCode; + case CONFIG_SETTING: + ConfigSettingEntry configSetting; } data; @@ -575,6 +637,25 @@ case LIQUIDITY_POOL: { PoolID liquidityPoolID; } liquidityPool; +case CONTRACT_DATA: + struct + { + SCAddress contract; + SCVal key; + ContractDataDurability durability; + ContractEntryBodyType bodyType; + } contractData; +case CONTRACT_CODE: + struct + { + Hash hash; + ContractEntryBodyType bodyType; + } contractCode; +case CONFIG_SETTING: + struct + { + ConfigSettingID configSettingID; + } configSetting; }; // list of all envelope types used in the application @@ -589,6 +670,8 @@ enum EnvelopeType ENVELOPE_TYPE_SCPVALUE = 4, ENVELOPE_TYPE_TX_FEE_BUMP = 5, ENVELOPE_TYPE_OP_ID = 6, - ENVELOPE_TYPE_POOL_REVOKE_OP_ID = 7 + ENVELOPE_TYPE_POOL_REVOKE_OP_ID = 7, + ENVELOPE_TYPE_CONTRACT_ID = 8, + ENVELOPE_TYPE_SOROBAN_AUTHORIZATION = 9 }; } diff --git a/xdr/Stellar-ledger.x b/xdr/Stellar-ledger.x index 84b84cbf7..e42e738a1 100644 --- a/xdr/Stellar-ledger.x +++ b/xdr/Stellar-ledger.x @@ -47,13 +47,17 @@ struct StellarValue ext; }; -const MASK_LEDGER_HEADER_FLAGS = 0x7; +const MASK_LEDGER_HEADER_FLAGS = 0x7F; enum LedgerHeaderFlags { DISABLE_LIQUIDITY_POOL_TRADING_FLAG = 0x1, DISABLE_LIQUIDITY_POOL_DEPOSIT_FLAG = 0x2, - DISABLE_LIQUIDITY_POOL_WITHDRAWAL_FLAG = 0x4 + DISABLE_LIQUIDITY_POOL_WITHDRAWAL_FLAG = 0x4, + DISABLE_CONTRACT_CREATE = 0x8, + DISABLE_CONTRACT_UPDATE = 0x10, + DISABLE_CONTRACT_REMOVE = 0x20, + DISABLE_CONTRACT_INVOKE = 0x40 }; struct LedgerHeaderExtensionV1 @@ -122,7 +126,13 @@ enum LedgerUpgradeType LEDGER_UPGRADE_BASE_FEE = 2, LEDGER_UPGRADE_MAX_TX_SET_SIZE = 3, LEDGER_UPGRADE_BASE_RESERVE = 4, - LEDGER_UPGRADE_FLAGS = 5 + LEDGER_UPGRADE_FLAGS = 5, + LEDGER_UPGRADE_CONFIG = 6 +}; + +struct ConfigUpgradeSetKey { + Hash contractID; + Hash contentHash; }; union LedgerUpgrade switch (LedgerUpgradeType type) @@ -137,6 +147,12 @@ case LEDGER_UPGRADE_BASE_RESERVE: uint32 newBaseReserve; // update baseReserve case LEDGER_UPGRADE_FLAGS: uint32 newFlags; // update flags +case LEDGER_UPGRADE_CONFIG: + ConfigUpgradeSetKey newConfig; +}; + +struct ConfigUpgradeSet { + ConfigSettingEntry updatedEntry<>; }; /* Entries used to define the bucket list */ @@ -176,6 +192,29 @@ case METAENTRY: BucketMetadata metaEntry; }; +enum TxSetComponentType +{ + // txs with effective fee <= bid derived from a base fee (if any). + // If base fee is not specified, no discount is applied. + TXSET_COMP_TXS_MAYBE_DISCOUNTED_FEE = 0 +}; + +union TxSetComponent switch (TxSetComponentType type) +{ +case TXSET_COMP_TXS_MAYBE_DISCOUNTED_FEE: + struct + { + int64* baseFee; + TransactionEnvelope txs<>; + } txsMaybeDiscountedFee; +}; + +union TransactionPhase switch (int v) +{ +case 0: + TxSetComponent v0Components<>; +}; + // Transaction sets are the unit used by SCP to decide on transitions // between ledgers struct TransactionSet @@ -184,6 +223,19 @@ struct TransactionSet TransactionEnvelope txs<>; }; +struct TransactionSetV1 +{ + Hash previousLedgerHash; + TransactionPhase phases<>; +}; + +union GeneralizedTransactionSet switch (int v) +{ +// We consider the legacy TransactionSet to be v0. +case 1: + TransactionSetV1 v1TxSet; +}; + struct TransactionResultPair { Hash transactionHash; @@ -203,11 +255,13 @@ struct TransactionHistoryEntry uint32 ledgerSeq; TransactionSet txSet; - // reserved for future use + // when v != 0, txSet must be empty union switch (int v) { case 0: void; + case 1: + GeneralizedTransactionSet generalizedTxSet; } ext; }; @@ -310,6 +364,74 @@ struct TransactionMetaV2 // applied if any }; +enum ContractEventType +{ + SYSTEM = 0, + CONTRACT = 1, + DIAGNOSTIC = 2 +}; + +struct ContractEvent +{ + // We can use this to add more fields, or because it + // is first, to change ContractEvent into a union. + ExtensionPoint ext; + + Hash* contractID; + ContractEventType type; + + union switch (int v) + { + case 0: + struct + { + SCVec topics; + SCVal data; + } v0; + } + body; +}; + +struct DiagnosticEvent +{ + bool inSuccessfulContractCall; + ContractEvent event; +}; + +struct SorobanTransactionMeta +{ + ExtensionPoint ext; + + ContractEvent events<>; // custom events populated by the + // contracts themselves. + SCVal returnValue; // return value of the host fn invocation + + // Diagnostics events that are not hashed. + // This will contain all contract and diagnostic events. Even ones + // that were emitted in a failed contract call. + DiagnosticEvent diagnosticEvents<>; +}; + +struct TransactionMetaV3 +{ + ExtensionPoint ext; + + LedgerEntryChanges txChangesBefore; // tx level changes before operations + // are applied if any + OperationMeta operations<>; // meta for each operation + LedgerEntryChanges txChangesAfter; // tx level changes after operations are + // applied if any + SorobanTransactionMeta* sorobanMeta; // Soroban-specific meta (only for + // Soroban transactions). +}; + +// This is in Stellar-ledger.x to due to a circular dependency +struct InvokeHostFunctionSuccessPreImage +{ + SCVal returnValue; + ContractEvent events<>; +}; + // this is the meta produced when applying transactions // it does not include pre-apply updates such as fees union TransactionMeta switch (int v) @@ -320,6 +442,8 @@ case 1: TransactionMetaV1 v1; case 2: TransactionMetaV2 v2; +case 3: + TransactionMetaV3 v3; }; // This struct groups together changes on a per transaction basis @@ -358,9 +482,64 @@ struct LedgerCloseMetaV0 SCPHistoryEntry scpInfo<>; }; +struct LedgerCloseMetaV1 +{ + LedgerHeaderHistoryEntry ledgerHeader; + + GeneralizedTransactionSet txSet; + + // NB: transactions are sorted in apply order here + // fees for all transactions are processed first + // followed by applying transactions + TransactionResultMeta txProcessing<>; + + // upgrades are applied last + UpgradeEntryMeta upgradesProcessing<>; + + // other misc information attached to the ledger close + SCPHistoryEntry scpInfo<>; +}; + +struct LedgerCloseMetaV2 +{ + // We forgot to add an ExtensionPoint in v1 but at least + // we can add one now in v2. + ExtensionPoint ext; + + LedgerHeaderHistoryEntry ledgerHeader; + + GeneralizedTransactionSet txSet; + + // NB: transactions are sorted in apply order here + // fees for all transactions are processed first + // followed by applying transactions + TransactionResultMeta txProcessing<>; + + // upgrades are applied last + UpgradeEntryMeta upgradesProcessing<>; + + // other misc information attached to the ledger close + SCPHistoryEntry scpInfo<>; + + // Size in bytes of BucketList, to support downstream + // systems calculating storage fees correctly. + uint64 totalByteSizeOfBucketList; + + // Expired temp keys that are being evicted at this ledger. + LedgerKey evictedTemporaryLedgerKeys<>; + + // Expired restorable ledger entries that are being + // evicted at this ledger. + LedgerEntry evictedPersistentLedgerEntries<>; +}; + union LedgerCloseMeta switch (int v) { case 0: LedgerCloseMetaV0 v0; +case 1: + LedgerCloseMetaV1 v1; +case 2: + LedgerCloseMetaV2 v2; }; } diff --git a/xdr/Stellar-overlay.x b/xdr/Stellar-overlay.x index 9e3a083d3..4c964736d 100644 --- a/xdr/Stellar-overlay.x +++ b/xdr/Stellar-overlay.x @@ -27,6 +27,12 @@ struct SendMore uint32 numMessages; }; +struct SendMoreExtended +{ + uint32 numMessages; + uint32 numBytes; +}; + struct AuthCert { Curve25519Public pubkey; @@ -47,11 +53,18 @@ struct Hello uint256 nonce; }; +// During the roll-out phrase, nodes can disable flow control in bytes. +// Therefore, we need a way to communicate with other nodes +// that we want/don't want flow control in bytes. +// We use the `flags` field in the Auth message with a special value +// set to communicate this. Note that AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED != 0 +// AND AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED != 100 (as previously +// that value was used for other purposes). +const AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED = 200; + struct Auth { - // Empty message, just to confirm - // establishment of MAC keys. - int unused; + int flags; }; enum IPAddrType @@ -74,6 +87,7 @@ struct PeerAddress uint32 numFailures; }; +// Next ID: 21 enum MessageType { ERROR_MSG = 0, @@ -85,6 +99,7 @@ enum MessageType GET_TX_SET = 6, // gets a particular txset by hash TX_SET = 7, + GENERALIZED_TX_SET = 17, TRANSACTION = 8, // pass on a tx you have heard about @@ -100,7 +115,11 @@ enum MessageType SURVEY_REQUEST = 14, SURVEY_RESPONSE = 15, - SEND_MORE = 16 + SEND_MORE = 16, + SEND_MORE_EXTENDED = 20, + + FLOOD_ADVERT = 18, + FLOOD_DEMAND = 19 }; struct DontHave @@ -114,6 +133,12 @@ enum SurveyMessageCommandType SURVEY_TOPOLOGY = 0 }; +enum SurveyMessageResponseType +{ + SURVEY_TOPOLOGY_RESPONSE_V0 = 0, + SURVEY_TOPOLOGY_RESPONSE_V1 = 1 +}; + struct SurveyRequestMessage { NodeID surveyorPeerID; @@ -168,19 +193,49 @@ struct PeerStats typedef PeerStats PeerStatList<25>; -struct TopologyResponseBody +struct TopologyResponseBodyV0 +{ + PeerStatList inboundPeers; + PeerStatList outboundPeers; + + uint32 totalInboundPeerCount; + uint32 totalOutboundPeerCount; +}; + +struct TopologyResponseBodyV1 { PeerStatList inboundPeers; PeerStatList outboundPeers; uint32 totalInboundPeerCount; uint32 totalOutboundPeerCount; + + uint32 maxInboundPeerCount; + uint32 maxOutboundPeerCount; }; -union SurveyResponseBody switch (SurveyMessageCommandType type) +union SurveyResponseBody switch (SurveyMessageResponseType type) +{ +case SURVEY_TOPOLOGY_RESPONSE_V0: + TopologyResponseBodyV0 topologyResponseBodyV0; +case SURVEY_TOPOLOGY_RESPONSE_V1: + TopologyResponseBodyV1 topologyResponseBodyV1; +}; + +const TX_ADVERT_VECTOR_MAX_SIZE = 1000; +typedef Hash TxAdvertVector; + +struct FloodAdvert +{ + TxAdvertVector txHashes; +}; + +const TX_DEMAND_VECTOR_MAX_SIZE = 1000; +typedef Hash TxDemandVector; + +struct FloodDemand { -case SURVEY_TOPOLOGY: - TopologyResponseBody topologyResponseBody; + TxDemandVector txHashes; }; union StellarMessage switch (MessageType type) @@ -202,6 +257,8 @@ case GET_TX_SET: uint256 txSetHash; case TX_SET: TransactionSet txSet; +case GENERALIZED_TX_SET: + GeneralizedTransactionSet generalizedTxSet; case TRANSACTION: TransactionEnvelope transaction; @@ -223,6 +280,13 @@ case GET_SCP_STATE: uint32 getSCPLedgerSeq; // ledger seq requested ; if 0, requests the latest case SEND_MORE: SendMore sendMoreMessage; +case SEND_MORE_EXTENDED: + SendMoreExtended sendMoreExtendedMessage; +// Pull mode +case FLOOD_ADVERT: + FloodAdvert floodAdvert; +case FLOOD_DEMAND: + FloodDemand floodDemand; }; union AuthenticatedMessage switch (uint32 v) diff --git a/xdr/Stellar-transaction.x b/xdr/Stellar-transaction.x index f2f593c21..40768fea9 100644 --- a/xdr/Stellar-transaction.x +++ b/xdr/Stellar-transaction.x @@ -2,11 +2,15 @@ // under the Apache License, Version 2.0. See the COPYING file at the root // of this distribution or at http://www.apache.org/licenses/LICENSE-2.0 +%#include "xdr/Stellar-contract.h" %#include "xdr/Stellar-ledger-entries.h" namespace stellar { +// maximum number of operations per transaction +const MAX_OPS_PER_TX = 100; + union LiquidityPoolParameters switch (LiquidityPoolType type) { case LIQUIDITY_POOL_CONSTANT_PRODUCT: @@ -57,7 +61,10 @@ enum OperationType CLAWBACK_CLAIMABLE_BALANCE = 20, SET_TRUST_LINE_FLAGS = 21, LIQUIDITY_POOL_DEPOSIT = 22, - LIQUIDITY_POOL_WITHDRAW = 23 + LIQUIDITY_POOL_WITHDRAW = 23, + INVOKE_HOST_FUNCTION = 24, + BUMP_FOOTPRINT_EXPIRATION = 25, + RESTORE_FOOTPRINT = 26 }; /* CreateAccount @@ -465,6 +472,142 @@ struct LiquidityPoolWithdrawOp int64 minAmountB; // minimum amount of second asset to withdraw }; +enum HostFunctionType +{ + HOST_FUNCTION_TYPE_INVOKE_CONTRACT = 0, + HOST_FUNCTION_TYPE_CREATE_CONTRACT = 1, + HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM = 2 +}; + +enum ContractIDPreimageType +{ + CONTRACT_ID_PREIMAGE_FROM_ADDRESS = 0, + CONTRACT_ID_PREIMAGE_FROM_ASSET = 1 +}; + +union ContractIDPreimage switch (ContractIDPreimageType type) +{ +case CONTRACT_ID_PREIMAGE_FROM_ADDRESS: + struct + { + SCAddress address; + uint256 salt; + } fromAddress; +case CONTRACT_ID_PREIMAGE_FROM_ASSET: + Asset fromAsset; +}; + +struct CreateContractArgs +{ + ContractIDPreimage contractIDPreimage; + ContractExecutable executable; +}; + +union HostFunction switch (HostFunctionType type) +{ +case HOST_FUNCTION_TYPE_INVOKE_CONTRACT: + SCVec invokeContract; +case HOST_FUNCTION_TYPE_CREATE_CONTRACT: + CreateContractArgs createContract; +case HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM: + opaque wasm<>; +}; + +enum SorobanAuthorizedFunctionType +{ + SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN = 0, + SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN = 1 +}; + +struct SorobanAuthorizedContractFunction +{ + SCAddress contractAddress; + SCSymbol functionName; + SCVec args; +}; + +union SorobanAuthorizedFunction switch (SorobanAuthorizedFunctionType type) +{ +case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN: + SorobanAuthorizedContractFunction contractFn; +case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN: + CreateContractArgs createContractHostFn; +}; + +struct SorobanAuthorizedInvocation +{ + SorobanAuthorizedFunction function; + SorobanAuthorizedInvocation subInvocations<>; +}; + +struct SorobanAddressCredentials +{ + SCAddress address; + int64 nonce; + uint32 signatureExpirationLedger; + SCVec signatureArgs; +}; + +enum SorobanCredentialsType +{ + SOROBAN_CREDENTIALS_SOURCE_ACCOUNT = 0, + SOROBAN_CREDENTIALS_ADDRESS = 1 +}; + +union SorobanCredentials switch (SorobanCredentialsType type) +{ +case SOROBAN_CREDENTIALS_SOURCE_ACCOUNT: + void; +case SOROBAN_CREDENTIALS_ADDRESS: + SorobanAddressCredentials address; +}; + +/* Unit of authorization data for Soroban. + + Represents an authorization for executing the tree of authorized contract + and/or host function calls by the user defined by `credentials`. +*/ +struct SorobanAuthorizationEntry +{ + SorobanCredentials credentials; + SorobanAuthorizedInvocation rootInvocation; +}; + +/* Upload WASM, create, and invoke contracts in Soroban. + + Threshold: med + Result: InvokeHostFunctionResult +*/ +struct InvokeHostFunctionOp +{ + // Host function to invoke. + HostFunction hostFunction; + // Per-address authorizations for this host function. + SorobanAuthorizationEntry auth<>; +}; + +/* Bump the expiration ledger of the entries specified in the readOnly footprint + so they'll expire at least ledgersToExpire ledgers from lcl. + + Threshold: med + Result: BumpFootprintExpirationResult +*/ +struct BumpFootprintExpirationOp +{ + ExtensionPoint ext; + uint32 ledgersToExpire; +}; + +/* Restore the expired or evicted entries specified in the readWrite footprint. + + Threshold: med + Result: RestoreFootprintOp +*/ +struct RestoreFootprintOp +{ + ExtensionPoint ext; +}; + /* An operation is the lowest unit of work that a transaction does */ struct Operation { @@ -523,6 +666,12 @@ struct Operation LiquidityPoolDepositOp liquidityPoolDepositOp; case LIQUIDITY_POOL_WITHDRAW: LiquidityPoolWithdrawOp liquidityPoolWithdrawOp; + case INVOKE_HOST_FUNCTION: + InvokeHostFunctionOp invokeHostFunctionOp; + case BUMP_FOOTPRINT_EXPIRATION: + BumpFootprintExpirationOp bumpFootprintExpirationOp; + case RESTORE_FOOTPRINT: + RestoreFootprintOp restoreFootprintOp; } body; }; @@ -540,11 +689,25 @@ case ENVELOPE_TYPE_POOL_REVOKE_OP_ID: struct { AccountID sourceAccount; - SequenceNumber seqNum; + SequenceNumber seqNum; uint32 opNum; PoolID liquidityPoolID; Asset asset; } revokeID; +case ENVELOPE_TYPE_CONTRACT_ID: + struct + { + Hash networkID; + ContractIDPreimage contractIDPreimage; + } contractID; +case ENVELOPE_TYPE_SOROBAN_AUTHORIZATION: + struct + { + Hash networkID; + int64 nonce; + uint32 signatureExpirationLedger; + SorobanAuthorizedInvocation invocation; + } sorobanAuthorization; }; enum MemoType @@ -632,8 +795,40 @@ case PRECOND_V2: PreconditionsV2 v2; }; -// maximum number of operations per transaction -const MAX_OPS_PER_TX = 100; +// Ledger key sets touched by a smart contract transaction. +struct LedgerFootprint +{ + LedgerKey readOnly<>; + LedgerKey readWrite<>; +}; + +// Resource limits for a Soroban transaction. +// The transaction will fail if it exceeds any of these limits. +struct SorobanResources +{ + // The ledger footprint of the transaction. + LedgerFootprint footprint; + // The maximum number of instructions this transaction can use + uint32 instructions; + + // The maximum number of bytes this transaction can read from ledger + uint32 readBytes; + // The maximum number of bytes this transaction can write to ledger + uint32 writeBytes; + + // Maximum size of dynamic metadata produced by this contract ( + // bytes read from ledger + bytes written to ledger + event bytes written to meta). + uint32 extendedMetaDataSizeBytes; +}; + +// The transaction extension for Soroban. +struct SorobanTransactionData +{ + ExtensionPoint ext; + SorobanResources resources; + // Portion of transaction `fee` allocated to refundable fees. + int64 refundableFee; +}; // TransactionV0 is a transaction with the AccountID discriminant stripped off, // leaving a raw ed25519 public key to identify the source account. This is used @@ -695,6 +890,8 @@ struct Transaction { case 0: void; + case 1: + SorobanTransactionData sorobanData; } ext; }; @@ -847,7 +1044,10 @@ union CreateAccountResult switch (CreateAccountResultCode code) { case CREATE_ACCOUNT_SUCCESS: void; -default: +case CREATE_ACCOUNT_MALFORMED: +case CREATE_ACCOUNT_UNDERFUNDED: +case CREATE_ACCOUNT_LOW_RESERVE: +case CREATE_ACCOUNT_ALREADY_EXIST: void; }; @@ -874,7 +1074,15 @@ union PaymentResult switch (PaymentResultCode code) { case PAYMENT_SUCCESS: void; -default: +case PAYMENT_MALFORMED: +case PAYMENT_UNDERFUNDED: +case PAYMENT_SRC_NO_TRUST: +case PAYMENT_SRC_NOT_AUTHORIZED: +case PAYMENT_NO_DESTINATION: +case PAYMENT_NO_TRUST: +case PAYMENT_NOT_AUTHORIZED: +case PAYMENT_LINE_FULL: +case PAYMENT_NO_ISSUER: void; }; @@ -925,9 +1133,20 @@ case PATH_PAYMENT_STRICT_RECEIVE_SUCCESS: ClaimAtom offers<>; SimplePaymentResult last; } success; +case PATH_PAYMENT_STRICT_RECEIVE_MALFORMED: +case PATH_PAYMENT_STRICT_RECEIVE_UNDERFUNDED: +case PATH_PAYMENT_STRICT_RECEIVE_SRC_NO_TRUST: +case PATH_PAYMENT_STRICT_RECEIVE_SRC_NOT_AUTHORIZED: +case PATH_PAYMENT_STRICT_RECEIVE_NO_DESTINATION: +case PATH_PAYMENT_STRICT_RECEIVE_NO_TRUST: +case PATH_PAYMENT_STRICT_RECEIVE_NOT_AUTHORIZED: +case PATH_PAYMENT_STRICT_RECEIVE_LINE_FULL: + void; case PATH_PAYMENT_STRICT_RECEIVE_NO_ISSUER: Asset noIssuer; // the asset that caused the error -default: +case PATH_PAYMENT_STRICT_RECEIVE_TOO_FEW_OFFERS: +case PATH_PAYMENT_STRICT_RECEIVE_OFFER_CROSS_SELF: +case PATH_PAYMENT_STRICT_RECEIVE_OVER_SENDMAX: void; }; @@ -969,9 +1188,20 @@ case PATH_PAYMENT_STRICT_SEND_SUCCESS: ClaimAtom offers<>; SimplePaymentResult last; } success; +case PATH_PAYMENT_STRICT_SEND_MALFORMED: +case PATH_PAYMENT_STRICT_SEND_UNDERFUNDED: +case PATH_PAYMENT_STRICT_SEND_SRC_NO_TRUST: +case PATH_PAYMENT_STRICT_SEND_SRC_NOT_AUTHORIZED: +case PATH_PAYMENT_STRICT_SEND_NO_DESTINATION: +case PATH_PAYMENT_STRICT_SEND_NO_TRUST: +case PATH_PAYMENT_STRICT_SEND_NOT_AUTHORIZED: +case PATH_PAYMENT_STRICT_SEND_LINE_FULL: + void; case PATH_PAYMENT_STRICT_SEND_NO_ISSUER: Asset noIssuer; // the asset that caused the error -default: +case PATH_PAYMENT_STRICT_SEND_TOO_FEW_OFFERS: +case PATH_PAYMENT_STRICT_SEND_OFFER_CROSS_SELF: +case PATH_PAYMENT_STRICT_SEND_UNDER_DESTMIN: void; }; @@ -1021,7 +1251,7 @@ struct ManageOfferSuccessResult case MANAGE_OFFER_CREATED: case MANAGE_OFFER_UPDATED: OfferEntry offer; - default: + case MANAGE_OFFER_DELETED: void; } offer; @@ -1031,7 +1261,18 @@ union ManageSellOfferResult switch (ManageSellOfferResultCode code) { case MANAGE_SELL_OFFER_SUCCESS: ManageOfferSuccessResult success; -default: +case MANAGE_SELL_OFFER_MALFORMED: +case MANAGE_SELL_OFFER_SELL_NO_TRUST: +case MANAGE_SELL_OFFER_BUY_NO_TRUST: +case MANAGE_SELL_OFFER_SELL_NOT_AUTHORIZED: +case MANAGE_SELL_OFFER_BUY_NOT_AUTHORIZED: +case MANAGE_SELL_OFFER_LINE_FULL: +case MANAGE_SELL_OFFER_UNDERFUNDED: +case MANAGE_SELL_OFFER_CROSS_SELF: +case MANAGE_SELL_OFFER_SELL_NO_ISSUER: +case MANAGE_SELL_OFFER_BUY_NO_ISSUER: +case MANAGE_SELL_OFFER_NOT_FOUND: +case MANAGE_SELL_OFFER_LOW_RESERVE: void; }; @@ -1065,7 +1306,18 @@ union ManageBuyOfferResult switch (ManageBuyOfferResultCode code) { case MANAGE_BUY_OFFER_SUCCESS: ManageOfferSuccessResult success; -default: +case MANAGE_BUY_OFFER_MALFORMED: +case MANAGE_BUY_OFFER_SELL_NO_TRUST: +case MANAGE_BUY_OFFER_BUY_NO_TRUST: +case MANAGE_BUY_OFFER_SELL_NOT_AUTHORIZED: +case MANAGE_BUY_OFFER_BUY_NOT_AUTHORIZED: +case MANAGE_BUY_OFFER_LINE_FULL: +case MANAGE_BUY_OFFER_UNDERFUNDED: +case MANAGE_BUY_OFFER_CROSS_SELF: +case MANAGE_BUY_OFFER_SELL_NO_ISSUER: +case MANAGE_BUY_OFFER_BUY_NO_ISSUER: +case MANAGE_BUY_OFFER_NOT_FOUND: +case MANAGE_BUY_OFFER_LOW_RESERVE: void; }; @@ -1093,7 +1345,16 @@ union SetOptionsResult switch (SetOptionsResultCode code) { case SET_OPTIONS_SUCCESS: void; -default: +case SET_OPTIONS_LOW_RESERVE: +case SET_OPTIONS_TOO_MANY_SIGNERS: +case SET_OPTIONS_BAD_FLAGS: +case SET_OPTIONS_INVALID_INFLATION: +case SET_OPTIONS_CANT_CHANGE: +case SET_OPTIONS_UNKNOWN_FLAG: +case SET_OPTIONS_THRESHOLD_OUT_OF_RANGE: +case SET_OPTIONS_BAD_SIGNER: +case SET_OPTIONS_INVALID_HOME_DOMAIN: +case SET_OPTIONS_AUTH_REVOCABLE_REQUIRED: void; }; @@ -1122,7 +1383,14 @@ union ChangeTrustResult switch (ChangeTrustResultCode code) { case CHANGE_TRUST_SUCCESS: void; -default: +case CHANGE_TRUST_MALFORMED: +case CHANGE_TRUST_NO_ISSUER: +case CHANGE_TRUST_INVALID_LIMIT: +case CHANGE_TRUST_LOW_RESERVE: +case CHANGE_TRUST_SELF_NOT_ALLOWED: +case CHANGE_TRUST_TRUST_LINE_MISSING: +case CHANGE_TRUST_CANNOT_DELETE: +case CHANGE_TRUST_NOT_AUTH_MAINTAIN_LIABILITIES: void; }; @@ -1147,7 +1415,12 @@ union AllowTrustResult switch (AllowTrustResultCode code) { case ALLOW_TRUST_SUCCESS: void; -default: +case ALLOW_TRUST_MALFORMED: +case ALLOW_TRUST_NO_TRUST_LINE: +case ALLOW_TRUST_TRUST_NOT_REQUIRED: +case ALLOW_TRUST_CANT_REVOKE: +case ALLOW_TRUST_SELF_NOT_ALLOWED: +case ALLOW_TRUST_LOW_RESERVE: void; }; @@ -1172,7 +1445,13 @@ union AccountMergeResult switch (AccountMergeResultCode code) { case ACCOUNT_MERGE_SUCCESS: int64 sourceAccountBalance; // how much got transferred from source account -default: +case ACCOUNT_MERGE_MALFORMED: +case ACCOUNT_MERGE_NO_ACCOUNT: +case ACCOUNT_MERGE_IMMUTABLE_SET: +case ACCOUNT_MERGE_HAS_SUB_ENTRIES: +case ACCOUNT_MERGE_SEQNUM_TOO_FAR: +case ACCOUNT_MERGE_DEST_FULL: +case ACCOUNT_MERGE_IS_SPONSOR: void; }; @@ -1196,7 +1475,7 @@ union InflationResult switch (InflationResultCode code) { case INFLATION_SUCCESS: InflationPayout payouts<>; -default: +case INFLATION_NOT_TIME: void; }; @@ -1219,7 +1498,10 @@ union ManageDataResult switch (ManageDataResultCode code) { case MANAGE_DATA_SUCCESS: void; -default: +case MANAGE_DATA_NOT_SUPPORTED_YET: +case MANAGE_DATA_NAME_NOT_FOUND: +case MANAGE_DATA_LOW_RESERVE: +case MANAGE_DATA_INVALID_NAME: void; }; @@ -1237,7 +1519,7 @@ union BumpSequenceResult switch (BumpSequenceResultCode code) { case BUMP_SEQUENCE_SUCCESS: void; -default: +case BUMP_SEQUENCE_BAD_SEQ: void; }; @@ -1258,7 +1540,11 @@ union CreateClaimableBalanceResult switch ( { case CREATE_CLAIMABLE_BALANCE_SUCCESS: ClaimableBalanceID balanceID; -default: +case CREATE_CLAIMABLE_BALANCE_MALFORMED: +case CREATE_CLAIMABLE_BALANCE_LOW_RESERVE: +case CREATE_CLAIMABLE_BALANCE_NO_TRUST: +case CREATE_CLAIMABLE_BALANCE_NOT_AUTHORIZED: +case CREATE_CLAIMABLE_BALANCE_UNDERFUNDED: void; }; @@ -1272,14 +1558,17 @@ enum ClaimClaimableBalanceResultCode CLAIM_CLAIMABLE_BALANCE_LINE_FULL = -3, CLAIM_CLAIMABLE_BALANCE_NO_TRUST = -4, CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED = -5 - }; union ClaimClaimableBalanceResult switch (ClaimClaimableBalanceResultCode code) { case CLAIM_CLAIMABLE_BALANCE_SUCCESS: void; -default: +case CLAIM_CLAIMABLE_BALANCE_DOES_NOT_EXIST: +case CLAIM_CLAIMABLE_BALANCE_CANNOT_CLAIM: +case CLAIM_CLAIMABLE_BALANCE_LINE_FULL: +case CLAIM_CLAIMABLE_BALANCE_NO_TRUST: +case CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED: void; }; @@ -1301,7 +1590,9 @@ union BeginSponsoringFutureReservesResult switch ( { case BEGIN_SPONSORING_FUTURE_RESERVES_SUCCESS: void; -default: +case BEGIN_SPONSORING_FUTURE_RESERVES_MALFORMED: +case BEGIN_SPONSORING_FUTURE_RESERVES_ALREADY_SPONSORED: +case BEGIN_SPONSORING_FUTURE_RESERVES_RECURSIVE: void; }; @@ -1321,7 +1612,7 @@ union EndSponsoringFutureReservesResult switch ( { case END_SPONSORING_FUTURE_RESERVES_SUCCESS: void; -default: +case END_SPONSORING_FUTURE_RESERVES_NOT_SPONSORED: void; }; @@ -1344,7 +1635,11 @@ union RevokeSponsorshipResult switch (RevokeSponsorshipResultCode code) { case REVOKE_SPONSORSHIP_SUCCESS: void; -default: +case REVOKE_SPONSORSHIP_DOES_NOT_EXIST: +case REVOKE_SPONSORSHIP_NOT_SPONSOR: +case REVOKE_SPONSORSHIP_LOW_RESERVE: +case REVOKE_SPONSORSHIP_ONLY_TRANSFERABLE: +case REVOKE_SPONSORSHIP_MALFORMED: void; }; @@ -1366,7 +1661,10 @@ union ClawbackResult switch (ClawbackResultCode code) { case CLAWBACK_SUCCESS: void; -default: +case CLAWBACK_MALFORMED: +case CLAWBACK_NOT_CLAWBACK_ENABLED: +case CLAWBACK_NO_TRUST: +case CLAWBACK_UNDERFUNDED: void; }; @@ -1388,7 +1686,9 @@ union ClawbackClaimableBalanceResult switch ( { case CLAWBACK_CLAIMABLE_BALANCE_SUCCESS: void; -default: +case CLAWBACK_CLAIMABLE_BALANCE_DOES_NOT_EXIST: +case CLAWBACK_CLAIMABLE_BALANCE_NOT_ISSUER: +case CLAWBACK_CLAIMABLE_BALANCE_NOT_CLAWBACK_ENABLED: void; }; @@ -1412,7 +1712,11 @@ union SetTrustLineFlagsResult switch (SetTrustLineFlagsResultCode code) { case SET_TRUST_LINE_FLAGS_SUCCESS: void; -default: +case SET_TRUST_LINE_FLAGS_MALFORMED: +case SET_TRUST_LINE_FLAGS_NO_TRUST_LINE: +case SET_TRUST_LINE_FLAGS_CANT_REVOKE: +case SET_TRUST_LINE_FLAGS_INVALID_STATE: +case SET_TRUST_LINE_FLAGS_LOW_RESERVE: void; }; @@ -1441,7 +1745,13 @@ union LiquidityPoolDepositResult switch (LiquidityPoolDepositResultCode code) { case LIQUIDITY_POOL_DEPOSIT_SUCCESS: void; -default: +case LIQUIDITY_POOL_DEPOSIT_MALFORMED: +case LIQUIDITY_POOL_DEPOSIT_NO_TRUST: +case LIQUIDITY_POOL_DEPOSIT_NOT_AUTHORIZED: +case LIQUIDITY_POOL_DEPOSIT_UNDERFUNDED: +case LIQUIDITY_POOL_DEPOSIT_LINE_FULL: +case LIQUIDITY_POOL_DEPOSIT_BAD_PRICE: +case LIQUIDITY_POOL_DEPOSIT_POOL_FULL: void; }; @@ -1467,7 +1777,72 @@ union LiquidityPoolWithdrawResult switch (LiquidityPoolWithdrawResultCode code) { case LIQUIDITY_POOL_WITHDRAW_SUCCESS: void; -default: +case LIQUIDITY_POOL_WITHDRAW_MALFORMED: +case LIQUIDITY_POOL_WITHDRAW_NO_TRUST: +case LIQUIDITY_POOL_WITHDRAW_UNDERFUNDED: +case LIQUIDITY_POOL_WITHDRAW_LINE_FULL: +case LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM: + void; +}; + +enum InvokeHostFunctionResultCode +{ + // codes considered as "success" for the operation + INVOKE_HOST_FUNCTION_SUCCESS = 0, + + // codes considered as "failure" for the operation + INVOKE_HOST_FUNCTION_MALFORMED = -1, + INVOKE_HOST_FUNCTION_TRAPPED = -2, + INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED = -3, + INVOKE_HOST_FUNCTION_ENTRY_EXPIRED = -4 +}; + +union InvokeHostFunctionResult switch (InvokeHostFunctionResultCode code) +{ +case INVOKE_HOST_FUNCTION_SUCCESS: + Hash success; // sha256(InvokeHostFunctionSuccessPreImage) +case INVOKE_HOST_FUNCTION_MALFORMED: +case INVOKE_HOST_FUNCTION_TRAPPED: +case INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED: +case INVOKE_HOST_FUNCTION_ENTRY_EXPIRED: + void; +}; + +enum BumpFootprintExpirationResultCode +{ + // codes considered as "success" for the operation + BUMP_FOOTPRINT_EXPIRATION_SUCCESS = 0, + + // codes considered as "failure" for the operation + BUMP_FOOTPRINT_EXPIRATION_MALFORMED = -1, + BUMP_FOOTPRINT_EXPIRATION_RESOURCE_LIMIT_EXCEEDED = -2 +}; + +union BumpFootprintExpirationResult switch (BumpFootprintExpirationResultCode code) +{ +case BUMP_FOOTPRINT_EXPIRATION_SUCCESS: + void; +case BUMP_FOOTPRINT_EXPIRATION_MALFORMED: +case BUMP_FOOTPRINT_EXPIRATION_RESOURCE_LIMIT_EXCEEDED: + void; +}; + +enum RestoreFootprintResultCode +{ + // codes considered as "success" for the operation + RESTORE_FOOTPRINT_SUCCESS = 0, + + // codes considered as "failure" for the operation + RESTORE_FOOTPRINT_MALFORMED = -1, + RESTORE_FOOTPRINT_RESOURCE_LIMIT_EXCEEDED = -2 +}; + +union RestoreFootprintResult switch (RestoreFootprintResultCode code) +{ +case RESTORE_FOOTPRINT_SUCCESS: + void; +case RESTORE_FOOTPRINT_MALFORMED: +case RESTORE_FOOTPRINT_RESOURCE_LIMIT_EXCEEDED: void; }; @@ -1537,9 +1912,20 @@ case opINNER: LiquidityPoolDepositResult liquidityPoolDepositResult; case LIQUIDITY_POOL_WITHDRAW: LiquidityPoolWithdrawResult liquidityPoolWithdrawResult; + case INVOKE_HOST_FUNCTION: + InvokeHostFunctionResult invokeHostFunctionResult; + case BUMP_FOOTPRINT_EXPIRATION: + BumpFootprintExpirationResult bumpFootprintExpirationResult; + case RESTORE_FOOTPRINT: + RestoreFootprintResult restoreFootprintResult; } tr; -default: +case opBAD_AUTH: +case opNO_ACCOUNT: +case opNOT_SUPPORTED: +case opTOO_MANY_SUBENTRIES: +case opEXCEEDED_WORK_LIMIT: +case opTOO_MANY_SPONSORING: void; }; @@ -1567,7 +1953,9 @@ enum TransactionResultCode txBAD_SPONSORSHIP = -14, // sponsorship not confirmed txBAD_MIN_SEQ_AGE_OR_GAP = -15, // minSeqAge or minSeqLedgerGap conditions not met - txMALFORMED = -16 // precondition is invalid + txMALFORMED = -16, // precondition is invalid + // declared Soroban resource usage exceeds the network limit + txSOROBAN_RESOURCE_LIMIT_EXCEEDED = -17 }; // InnerTransactionResult must be binary compatible with TransactionResult @@ -1598,6 +1986,7 @@ struct InnerTransactionResult case txBAD_SPONSORSHIP: case txBAD_MIN_SEQ_AGE_OR_GAP: case txMALFORMED: + case txSOROBAN_RESOURCE_LIMIT_EXCEEDED: void; } result; @@ -1629,7 +2018,22 @@ struct TransactionResult case txSUCCESS: case txFAILED: OperationResult results<>; - default: + case txTOO_EARLY: + case txTOO_LATE: + case txMISSING_OPERATION: + case txBAD_SEQ: + case txBAD_AUTH: + case txINSUFFICIENT_BALANCE: + case txNO_ACCOUNT: + case txINSUFFICIENT_FEE: + case txBAD_AUTH_EXTRA: + case txINTERNAL_ERROR: + case txNOT_SUPPORTED: + // case txFEE_BUMP_INNER_FAILED: handled above + case txBAD_SPONSORSHIP: + case txBAD_MIN_SEQ_AGE_OR_GAP: + case txMALFORMED: + case txSOROBAN_RESOURCE_LIMIT_EXCEEDED: void; } result; diff --git a/xdr/Stellar-types.x b/xdr/Stellar-types.x index c3a1ebe2c..d71bf0d49 100644 --- a/xdr/Stellar-types.x +++ b/xdr/Stellar-types.x @@ -14,6 +14,9 @@ typedef int int32; typedef unsigned hyper uint64; typedef hyper int64; +typedef uint64 TimePoint; +typedef uint64 Duration; + // An ExtensionPoint is always marshaled as a 32-bit 0 value. At a // later point, it can be replaced by a different union so as to // extend a structure. @@ -79,6 +82,7 @@ typedef opaque Signature<64>; typedef opaque SignatureHint[4]; typedef PublicKey NodeID; +typedef PublicKey AccountID; struct Curve25519Secret { From 9690f7a1df9f28667d151e60edef2f2d1e4a284c Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Fri, 28 Jul 2023 07:02:34 +0800 Subject: [PATCH 03/29] Add support for BumpFootprintExpirationOperation and RestoreFootprintOperation (#491) --- .../sdk/BumpFootprintExpirationOperation.java | 71 +++++++++++ .../sdk/InvokeHostFunctionOperation.java | 2 +- src/main/java/org/stellar/sdk/Operation.java | 6 + .../sdk/RestoreFootprintOperation.java | 46 ++++++++ .../sdk/responses/OperationDeserializer.java | 4 + ...pFootprintExpirationOperationResponse.java | 27 +++++ .../InvokeHostFunctionOperationResponse.java | 3 + .../RestoreFootprintOperationResponse.java | 14 +++ .../BumpFootprintExpirationOperationTest.java | 111 ++++++++++++++++++ .../sdk/RestoreFootprintOperationTest.java | 56 +++++++++ .../responses/OperationDeserializerTest.java | 100 ++++++++++++++++ 11 files changed, 439 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/stellar/sdk/BumpFootprintExpirationOperation.java create mode 100644 src/main/java/org/stellar/sdk/RestoreFootprintOperation.java create mode 100644 src/main/java/org/stellar/sdk/responses/operations/BumpFootprintExpirationOperationResponse.java create mode 100644 src/main/java/org/stellar/sdk/responses/operations/RestoreFootprintOperationResponse.java create mode 100644 src/test/java/org/stellar/sdk/BumpFootprintExpirationOperationTest.java create mode 100644 src/test/java/org/stellar/sdk/RestoreFootprintOperationTest.java diff --git a/src/main/java/org/stellar/sdk/BumpFootprintExpirationOperation.java b/src/main/java/org/stellar/sdk/BumpFootprintExpirationOperation.java new file mode 100644 index 000000000..4949a5ea5 --- /dev/null +++ b/src/main/java/org/stellar/sdk/BumpFootprintExpirationOperation.java @@ -0,0 +1,71 @@ +package org.stellar.sdk; + +import lombok.EqualsAndHashCode; +import lombok.NonNull; +import lombok.Value; +import lombok.experimental.SuperBuilder; +import org.stellar.sdk.xdr.BumpFootprintExpirationOp; +import org.stellar.sdk.xdr.ExtensionPoint; +import org.stellar.sdk.xdr.OperationType; +import org.stellar.sdk.xdr.Uint32; + +/** + * Represents BumpFootprintExpiration operation. + * + *

Bump the expiration of a footprint (read and written ledger keys). + * + * @see List of Operations + */ +@EqualsAndHashCode(callSuper = true) +@SuperBuilder(toBuilder = true) +@Value +public class BumpFootprintExpirationOperation extends Operation { + + /** + * the number of ledgers past the LCL (last closed ledger) by which to extend the validity of the + * ledger keys in this transaction + */ + @NonNull Integer ledgersToExpire; + + /** + * Constructs a new BumpFootprintExpirationOperation object from the XDR representation of the + * {@link BumpFootprintExpirationOperation}. + * + * @param op the XDR representation of the {@link BumpFootprintExpirationOperation}. + */ + public static BumpFootprintExpirationOperation fromXdr(BumpFootprintExpirationOp op) { + return BumpFootprintExpirationOperation.builder() + .ledgersToExpire(op.getLedgersToExpire().getUint32()) + .build(); + } + + @Override + org.stellar.sdk.xdr.Operation.OperationBody toOperationBody(AccountConverter accountConverter) { + BumpFootprintExpirationOp op = new BumpFootprintExpirationOp(); + op.setExt(new ExtensionPoint.Builder().discriminant(0).build()); + op.setLedgersToExpire(new Uint32(ledgersToExpire)); + + org.stellar.sdk.xdr.Operation.OperationBody body = + new org.stellar.sdk.xdr.Operation.OperationBody(); + body.setDiscriminant(OperationType.BUMP_FOOTPRINT_EXPIRATION); + body.setBumpFootprintExpirationOp(op); + return body; + } + + /** Customizing builder methods. Rest of the builder code will be auto generated by Lombok. */ + public abstract static class BumpFootprintExpirationOperationBuilder< + C extends BumpFootprintExpirationOperation, + B extends BumpFootprintExpirationOperationBuilder> + extends OperationBuilder { + public B ledgersToExpire(Integer ledgersToExpire) { + if (ledgersToExpire <= 0) { + throw new IllegalArgumentException("ledgersToExpire isn't a ledger quantity (uint32)"); + } + this.ledgersToExpire = ledgersToExpire; + return self(); + } + } +} diff --git a/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java b/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java index e0ed9cccd..914c547e1 100644 --- a/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java +++ b/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java @@ -14,7 +14,7 @@ /** * Represents InvokeHostFunction operation. * * @see RestoreFootprint operation. + * + * @see List of Operations + */ +@EqualsAndHashCode(callSuper = true) +@SuperBuilder(toBuilder = true) +@Value +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class RestoreFootprintOperation extends Operation { + /** + * Constructs a new RestoreFootprintOperation object from the XDR representation of the {@link + * RestoreFootprintOperation}. + * + * @param op the XDR representation of the {@link RestoreFootprintOperation}. + */ + public static RestoreFootprintOperation fromXdr(RestoreFootprintOp op) { + return new RestoreFootprintOperation(); + } + + @Override + org.stellar.sdk.xdr.Operation.OperationBody toOperationBody(AccountConverter accountConverter) { + RestoreFootprintOp op = new RestoreFootprintOp(); + op.setExt(new ExtensionPoint.Builder().discriminant(0).build()); + + org.stellar.sdk.xdr.Operation.OperationBody body = + new org.stellar.sdk.xdr.Operation.OperationBody(); + body.setDiscriminant(OperationType.RESTORE_FOOTPRINT); + body.setRestoreFootprintOp(op); + return body; + } +} diff --git a/src/main/java/org/stellar/sdk/responses/OperationDeserializer.java b/src/main/java/org/stellar/sdk/responses/OperationDeserializer.java index 961cc1474..550cad8ab 100644 --- a/src/main/java/org/stellar/sdk/responses/OperationDeserializer.java +++ b/src/main/java/org/stellar/sdk/responses/OperationDeserializer.java @@ -89,6 +89,10 @@ public OperationResponse deserialize( return gson.fromJson(json, LiquidityPoolWithdrawOperationResponse.class); case INVOKE_HOST_FUNCTION: return gson.fromJson(json, InvokeHostFunctionOperationResponse.class); + case BUMP_FOOTPRINT_EXPIRATION: + return gson.fromJson(json, BumpFootprintExpirationOperationResponse.class); + case RESTORE_FOOTPRINT: + return gson.fromJson(json, RestoreFootprintOperationResponse.class); default: throw new RuntimeException("Invalid operation type"); } diff --git a/src/main/java/org/stellar/sdk/responses/operations/BumpFootprintExpirationOperationResponse.java b/src/main/java/org/stellar/sdk/responses/operations/BumpFootprintExpirationOperationResponse.java new file mode 100644 index 000000000..1e23f0ac4 --- /dev/null +++ b/src/main/java/org/stellar/sdk/responses/operations/BumpFootprintExpirationOperationResponse.java @@ -0,0 +1,27 @@ +package org.stellar.sdk.responses.operations; + +import com.google.gson.annotations.SerializedName; + +/** + * Represents BumpFootprintExpiration operation response. + * + * @see Horizon + * Protocol + * @see Operation documentation + * @see org.stellar.sdk.requests.OperationsRequestBuilder + * @see org.stellar.sdk.Server#operations() + */ +public class BumpFootprintExpirationOperationResponse extends OperationResponse { + @SerializedName("ledgers_to_expire") + private final Long ledgersToExpire; + + public BumpFootprintExpirationOperationResponse(Long ledgersToExpire) { + this.ledgersToExpire = ledgersToExpire; + } + + public Long getLedgersToExpire() { + return ledgersToExpire; + } +} diff --git a/src/main/java/org/stellar/sdk/responses/operations/InvokeHostFunctionOperationResponse.java b/src/main/java/org/stellar/sdk/responses/operations/InvokeHostFunctionOperationResponse.java index 47a677921..45764b231 100644 --- a/src/main/java/org/stellar/sdk/responses/operations/InvokeHostFunctionOperationResponse.java +++ b/src/main/java/org/stellar/sdk/responses/operations/InvokeHostFunctionOperationResponse.java @@ -7,6 +7,9 @@ /** * Represents InvokeHostFunction operation response. * + * @see Horizon + * Protocol * @see Operation documentation * @see org.stellar.sdk.requests.OperationsRequestBuilder diff --git a/src/main/java/org/stellar/sdk/responses/operations/RestoreFootprintOperationResponse.java b/src/main/java/org/stellar/sdk/responses/operations/RestoreFootprintOperationResponse.java new file mode 100644 index 000000000..f6795f56c --- /dev/null +++ b/src/main/java/org/stellar/sdk/responses/operations/RestoreFootprintOperationResponse.java @@ -0,0 +1,14 @@ +package org.stellar.sdk.responses.operations; + +/** + * Represents RestoreFootprint operation response. + * + * @see Horizon + * Protocol + * @see Operation documentation + * @see org.stellar.sdk.requests.OperationsRequestBuilder + * @see org.stellar.sdk.Server#operations() + */ +public class RestoreFootprintOperationResponse extends OperationResponse {} diff --git a/src/test/java/org/stellar/sdk/BumpFootprintExpirationOperationTest.java b/src/test/java/org/stellar/sdk/BumpFootprintExpirationOperationTest.java new file mode 100644 index 000000000..21411c5df --- /dev/null +++ b/src/test/java/org/stellar/sdk/BumpFootprintExpirationOperationTest.java @@ -0,0 +1,111 @@ +package org.stellar.sdk; + +import static junit.framework.TestCase.assertEquals; +import static junit.framework.TestCase.assertNull; + +import org.junit.Assert; +import org.junit.Test; + +public class BumpFootprintExpirationOperationTest { + @Test + public void testBuilderWithSource() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + BumpFootprintExpirationOperation op = + BumpFootprintExpirationOperation.builder() + .ledgersToExpire(123) + .sourceAccount(source) + .build(); + assertEquals(Integer.valueOf(123), op.getLedgersToExpire()); + assertEquals(source, op.getSourceAccount()); + String expectXdr = "AAAAAQAAAAAk4TTtavBWsGnEN3KxHw4Ohwi22ZJHWi8hlamN5pm0TgAAABkAAAAAAAAAew=="; + assertEquals(expectXdr, op.toXdrBase64()); + } + + @Test + public void testBuilderWithoutSource() { + BumpFootprintExpirationOperation op = + BumpFootprintExpirationOperation.builder().ledgersToExpire(123).build(); + assertEquals(Integer.valueOf(123), op.getLedgersToExpire()); + assertNull(op.getSourceAccount()); + String expectXdr = "AAAAAAAAABkAAAAAAAAAew=="; + assertEquals(expectXdr, op.toXdrBase64()); + } + + @Test + public void testFromXdr() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + BumpFootprintExpirationOperation originOp = + BumpFootprintExpirationOperation.builder() + .ledgersToExpire(123) + .sourceAccount(source) + .build(); + org.stellar.sdk.xdr.Operation xdrObject = originOp.toXdr(); + Operation restartOp = Operation.fromXdr(xdrObject); + Assert.assertEquals(restartOp, originOp); + } + + @Test + public void testEquals() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + BumpFootprintExpirationOperation operation1 = + BumpFootprintExpirationOperation.builder() + .ledgersToExpire(123) + .sourceAccount(source) + .build(); + BumpFootprintExpirationOperation operation2 = + BumpFootprintExpirationOperation.builder() + .ledgersToExpire(123) + .sourceAccount(source) + .build(); + assertEquals(operation1, operation2); + } + + @Test + public void testNotEquals() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + BumpFootprintExpirationOperation operation1 = + BumpFootprintExpirationOperation.builder() + .ledgersToExpire(123) + .sourceAccount(source) + .build(); + BumpFootprintExpirationOperation operation2 = + BumpFootprintExpirationOperation.builder() + .ledgersToExpire(124) + .sourceAccount(source) + .build(); + Assert.assertNotEquals(operation1, operation2); + } + + @Test + public void testNotEqualsSource() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + BumpFootprintExpirationOperation operation1 = + BumpFootprintExpirationOperation.builder() + .ledgersToExpire(123) + .sourceAccount(source) + .build(); + BumpFootprintExpirationOperation operation2 = + BumpFootprintExpirationOperation.builder().ledgersToExpire(123).build(); + Assert.assertNotEquals(operation1, operation2); + } + + @Test + public void testLedgersToExpireIsInvalidThrows() { + try { + BumpFootprintExpirationOperation.builder().ledgersToExpire(-1).build(); + Assert.fail(); + } catch (IllegalArgumentException e) { + Assert.assertEquals("ledgersToExpire isn't a ledger quantity (uint32)", e.getMessage()); + } + } + + @Test + public void testLedgersToExpireIsNullThrows() { + try { + BumpFootprintExpirationOperation.builder().build(); + Assert.fail(); + } catch (NullPointerException e) { + Assert.assertEquals("ledgersToExpire is marked non-null but is null", e.getMessage()); + } + } +} diff --git a/src/test/java/org/stellar/sdk/RestoreFootprintOperationTest.java b/src/test/java/org/stellar/sdk/RestoreFootprintOperationTest.java new file mode 100644 index 000000000..ac55cd8dd --- /dev/null +++ b/src/test/java/org/stellar/sdk/RestoreFootprintOperationTest.java @@ -0,0 +1,56 @@ +package org.stellar.sdk; + +import static junit.framework.TestCase.assertEquals; +import static junit.framework.TestCase.assertNull; + +import org.junit.Assert; +import org.junit.Test; + +public class RestoreFootprintOperationTest { + @Test + public void testBuilderWithSource() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + RestoreFootprintOperation op = + RestoreFootprintOperation.builder().sourceAccount(source).build(); + assertEquals(source, op.getSourceAccount()); + String expectXdr = "AAAAAQAAAAAk4TTtavBWsGnEN3KxHw4Ohwi22ZJHWi8hlamN5pm0TgAAABoAAAAA"; + assertEquals(expectXdr, op.toXdrBase64()); + } + + @Test + public void testBuilderWithoutSource() { + RestoreFootprintOperation op = RestoreFootprintOperation.builder().build(); + assertNull(op.getSourceAccount()); + String expectXdr = "AAAAAAAAABoAAAAA"; + assertEquals(expectXdr, op.toXdrBase64()); + } + + @Test + public void testFromXdr() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + RestoreFootprintOperation originOp = + RestoreFootprintOperation.builder().sourceAccount(source).build(); + org.stellar.sdk.xdr.Operation xdrObject = originOp.toXdr(); + Operation restartOp = Operation.fromXdr(xdrObject); + Assert.assertEquals(restartOp, originOp); + } + + @Test + public void testEquals() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + RestoreFootprintOperation operation1 = + RestoreFootprintOperation.builder().sourceAccount(source).build(); + RestoreFootprintOperation operation2 = + RestoreFootprintOperation.builder().sourceAccount(source).build(); + assertEquals(operation1, operation2); + } + + @Test + public void testNotEquals() { + String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; + RestoreFootprintOperation operation1 = + RestoreFootprintOperation.builder().sourceAccount(source).build(); + RestoreFootprintOperation operation2 = RestoreFootprintOperation.builder().build(); + Assert.assertNotEquals(operation1, operation2); + } +} diff --git a/src/test/java/org/stellar/sdk/responses/OperationDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/OperationDeserializerTest.java index 9bca0d33b..955b13eff 100644 --- a/src/test/java/org/stellar/sdk/responses/OperationDeserializerTest.java +++ b/src/test/java/org/stellar/sdk/responses/OperationDeserializerTest.java @@ -18,6 +18,7 @@ import org.stellar.sdk.Price; import org.stellar.sdk.responses.operations.AccountMergeOperationResponse; import org.stellar.sdk.responses.operations.AllowTrustOperationResponse; +import org.stellar.sdk.responses.operations.BumpFootprintExpirationOperationResponse; import org.stellar.sdk.responses.operations.BumpSequenceOperationResponse; import org.stellar.sdk.responses.operations.ChangeTrustOperationResponse; import org.stellar.sdk.responses.operations.ClaimClaimableBalanceOperationResponse; @@ -36,6 +37,7 @@ import org.stellar.sdk.responses.operations.PathPaymentStrictReceiveOperationResponse; import org.stellar.sdk.responses.operations.PathPaymentStrictSendOperationResponse; import org.stellar.sdk.responses.operations.PaymentOperationResponse; +import org.stellar.sdk.responses.operations.RestoreFootprintOperationResponse; import org.stellar.sdk.responses.operations.SetOptionsOperationResponse; import org.stellar.sdk.responses.operations.SetTrustLineFlagsOperationResponse; @@ -1956,4 +1958,102 @@ public void testDeserializeInvokeHostFunctionOperation() { "GBMLPRFCZDZJPKUPHUSHCKA737GOZL7ERZLGGMJ6YGHBFJZ6ZKMKCZTM"); assertEquals(operation.getAssetBalanceChanges().get(0).getAmount(), "500.0000000"); } + + @Test + public void testDeserializeBumpFootprintExpirationOperation() { + String json = + "{\n" + + " \"_links\": {\n" + + " \"self\": {\n" + + " \"href\": \"http://127.0.0.1:8000/operations/2224793063426\"\n" + + " },\n" + + " \"transaction\": {\n" + + " \"href\": \"http://127.0.0.1:8000/transactions/c452cd9d1ff9692499d0d2aa2f8e898b8c38025300c0f293f4a2adde7295c82f\"\n" + + " },\n" + + " \"effects\": {\n" + + " \"href\": \"http://127.0.0.1:8000/operations/2224793063426/effects\"\n" + + " },\n" + + " \"succeeds\": {\n" + + " \"href\": \"http://127.0.0.1:8000/effects?order=desc&cursor=2224793063426\"\n" + + " },\n" + + " \"precedes\": {\n" + + " \"href\": \"http://127.0.0.1:8000/effects?order=asc&cursor=2224793063426\"\n" + + " }\n" + + " },\n" + + " \"id\": \"2224793063426\",\n" + + " \"paging_token\": \"2224793063426\",\n" + + " \"transaction_successful\": true,\n" + + " \"source_account\": \"GDAT5HWTGIU4TSSZ4752OUC4SABDLTLZFRPZUJ3D6LKBNEPA7V2CIG54\",\n" + + " \"type\": \"bump_footprint_expiration\",\n" + + " \"type_i\": 25,\n" + + " \"created_at\": \"2023-07-20T10:44:56Z\",\n" + + " \"transaction_hash\": \"c452cd9d1ff9692499d0d2aa2f8e898b8c38025300c0f293f4a2adde7295c82f\",\n" + + " \"ledgers_to_expire\": \"2343241\"\n" + + "}"; + + BumpFootprintExpirationOperationResponse operation = + (BumpFootprintExpirationOperationResponse) + GsonSingleton.getInstance().fromJson(json, OperationResponse.class); + assertEquals( + operation.getLinks().getSelf().getHref(), "http://127.0.0.1:8000/operations/2224793063426"); + assertEquals(operation.getId().longValue(), 2224793063426L); + assertEquals(operation.getPagingToken(), "2224793063426"); + // assertEquals(operation.getTransactionSuccessful(), true); + assertEquals( + operation.getSourceAccount(), "GDAT5HWTGIU4TSSZ4752OUC4SABDLTLZFRPZUJ3D6LKBNEPA7V2CIG54"); + assertEquals(operation.getType(), "bump_footprint_expiration"); + assertEquals(operation.getCreatedAt(), "2023-07-20T10:44:56Z"); + assertEquals( + operation.getTransactionHash(), + "c452cd9d1ff9692499d0d2aa2f8e898b8c38025300c0f293f4a2adde7295c82f"); + assertEquals(operation.getLedgersToExpire().longValue(), 2343241); + } + + @Test + public void testDeserializeRestoreFootprintOperationResponse() { + String json = + "{\n" + + " \"_links\": {\n" + + " \"self\": {\n" + + " \"href\": \"http://127.0.0.1:8000/operations/2224793063427\"\n" + + " },\n" + + " \"transaction\": {\n" + + " \"href\": \"http://127.0.0.1:8000/transactions/b6932dacb25e05ca8e3d006d2a5a119683602f70474cc9f5de9fc53e99f627f8\"\n" + + " },\n" + + " \"effects\": {\n" + + " \"href\": \"http://127.0.0.1:8000/operations/2224793063427/effects\"\n" + + " },\n" + + " \"succeeds\": {\n" + + " \"href\": \"http://127.0.0.1:8000/effects?order=desc&cursor=2224793063427\"\n" + + " },\n" + + " \"precedes\": {\n" + + " \"href\": \"http://127.0.0.1:8000/effects?order=asc&cursor=2224793063427\"\n" + + " }\n" + + " },\n" + + " \"id\": \"2224793063427\",\n" + + " \"paging_token\": \"2224793063427\",\n" + + " \"transaction_successful\": true,\n" + + " \"source_account\": \"GDAT5HWTGIU4TSSZ4752OUC4SABDLTLZFRPZUJ3D6LKBNEPA7V2CIG54\",\n" + + " \"type\": \"restore_footprint\",\n" + + " \"type_i\": 26,\n" + + " \"created_at\": \"2023-07-20T10:44:56Z\",\n" + + " \"transaction_hash\": \"b6932dacb25e05ca8e3d006d2a5a119683602f70474cc9f5de9fc53e99f627f8\"\n" + + "}"; + + RestoreFootprintOperationResponse operation = + (RestoreFootprintOperationResponse) + GsonSingleton.getInstance().fromJson(json, OperationResponse.class); + assertEquals( + operation.getLinks().getSelf().getHref(), "http://127.0.0.1:8000/operations/2224793063427"); + assertEquals(operation.getId().longValue(), 2224793063427L); + assertEquals(operation.getPagingToken(), "2224793063427"); + // assertEquals(operation.getTransactionSuccessful(), true); + assertEquals( + operation.getSourceAccount(), "GDAT5HWTGIU4TSSZ4752OUC4SABDLTLZFRPZUJ3D6LKBNEPA7V2CIG54"); + assertEquals(operation.getType(), "restore_footprint"); + assertEquals(operation.getCreatedAt(), "2023-07-20T10:44:56Z"); + assertEquals( + operation.getTransactionHash(), + "b6932dacb25e05ca8e3d006d2a5a119683602f70474cc9f5de9fc53e99f627f8"); + } } From 717426ec84eaa343aee53c0e0f9fba1d1f83eccf Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Mon, 31 Jul 2023 21:53:06 +0800 Subject: [PATCH 04/29] Add some APIs to make it more convenient for users to construct InvokeHostFunction. (#497) --- .../sdk/InvokeHostFunctionOperation.java | 221 +++++++++++++++ .../sdk/InvokeHostFunctionOperationTest.java | 260 +++++++++++++++++- 2 files changed, 479 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java b/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java index 914c547e1..e0fa39eab 100644 --- a/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java +++ b/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java @@ -1,16 +1,33 @@ package org.stellar.sdk; +import java.security.SecureRandom; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.List; +import javax.annotation.Nullable; import lombok.EqualsAndHashCode; import lombok.NonNull; import lombok.Singular; import lombok.Value; import lombok.experimental.SuperBuilder; +import org.stellar.sdk.xdr.ContractExecutable; +import org.stellar.sdk.xdr.ContractExecutableType; +import org.stellar.sdk.xdr.ContractIDPreimage; +import org.stellar.sdk.xdr.ContractIDPreimageType; +import org.stellar.sdk.xdr.CreateContractArgs; +import org.stellar.sdk.xdr.Hash; import org.stellar.sdk.xdr.HostFunction; +import org.stellar.sdk.xdr.HostFunctionType; import org.stellar.sdk.xdr.InvokeHostFunctionOp; import org.stellar.sdk.xdr.OperationType; +import org.stellar.sdk.xdr.SCSymbol; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.SCVec; import org.stellar.sdk.xdr.SorobanAuthorizationEntry; +import org.stellar.sdk.xdr.Uint256; +import org.stellar.sdk.xdr.XdrString; /** * Represents uploadContractWasmOperationBuilder( + byte[] wasm) { + HostFunction hostFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM) + .wasm(wasm) + .build(); + return builder().hostFunction(hostFunction); + } + + /** + * This function will create an {@link InvokeHostFunctionOperationBuilder} with the "hostFunction" + * parameter preset, so that you can conveniently build an {@link InvokeHostFunctionOperation} to + * create contract. + * + * @param wasmId The hex-encoded wasm id to use for contract creation. + * @param address The address to use to derive the contract ID. + * @param salt The 32-byte salt to use to derive the contract ID, if null, a random salt will be + * generated. + * @return {@link InvokeHostFunctionOperationBuilder} + */ + public static InvokeHostFunctionOperationBuilder createContractOperationBuilder( + String wasmId, Address address, @Nullable byte[] salt) { + byte[] wasmIdBytes = Util.hexToBytes(wasmId); + return createContractOperationBuilder(wasmIdBytes, address, salt); + } + + /** + * This function will create an {@link InvokeHostFunctionOperationBuilder} with the "hostFunction" + * parameter preset, so that you can conveniently build an {@link InvokeHostFunctionOperation} to + * create contract. + * + * @param wasmId The wasm id to use for contract creation. + * @param address The address to use to derive the contract ID. + * @param salt The 32-byte salt to use to derive the contract ID, if null, a random salt will be + * generated. + * @return {@link InvokeHostFunctionOperationBuilder} + */ + public static InvokeHostFunctionOperationBuilder createContractOperationBuilder( + byte[] wasmId, Address address, @Nullable byte[] salt) { + if (salt == null) { + salt = new byte[32]; + new SecureRandom().nextBytes(salt); + } else if (salt.length != 32) { + throw new IllegalArgumentException("\"salt\" must be 32 bytes long"); + } + + if (wasmId.length != 32) { + throw new IllegalArgumentException("\"wasmId\" must be 32 bytes long"); + } + + CreateContractArgs createContractArgs = + new CreateContractArgs.Builder() + .contractIDPreimage( + new ContractIDPreimage.Builder() + .discriminant(ContractIDPreimageType.CONTRACT_ID_PREIMAGE_FROM_ADDRESS) + .fromAddress( + new ContractIDPreimage.ContractIDPreimageFromAddress.Builder() + .address(address.toSCAddress()) + .salt(new Uint256(salt)) + .build()) + .build()) + .executable( + new ContractExecutable.Builder() + .discriminant(ContractExecutableType.CONTRACT_EXECUTABLE_WASM) + .wasm_hash(new Hash(wasmId)) + .build()) + .build(); + HostFunction hostFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + return builder().hostFunction(hostFunction); + } + + /** + * This function will create an {@link InvokeHostFunctionOperationBuilder} with the "hostFunction" + * parameter preset, so that you can conveniently build an {@link InvokeHostFunctionOperation} to + * create a token contract wrapping a classic asset. + * + * @param asset The classic asset to wrap. + * @return {@link InvokeHostFunctionOperationBuilder} + */ + public static InvokeHostFunctionOperationBuilder createTokenContractOperationBuilder( + Asset asset) { + CreateContractArgs createContractArgs = + new CreateContractArgs.Builder() + .contractIDPreimage( + new ContractIDPreimage.Builder() + .discriminant(ContractIDPreimageType.CONTRACT_ID_PREIMAGE_FROM_ASSET) + .fromAsset(asset.toXdr()) + .build()) + .executable( + new ContractExecutable.Builder() + .discriminant(ContractExecutableType.CONTRACT_EXECUTABLE_TOKEN) + .build()) + .build(); + HostFunction hostFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + return builder().hostFunction(hostFunction); + } + + /** + * This function will create an {@link InvokeHostFunctionOperationBuilder} with the "hostFunction" + * parameter preset, so that you can conveniently build an {@link InvokeHostFunctionOperation} to + * create a token contract wrapping a classic asset. + * + * @param address The address to use to derive the contract ID. + * @param salt The 32-byte salt to use to derive the contract ID, if null, a random salt will be + * generated. + * @return {@link InvokeHostFunctionOperationBuilder} + */ + public static InvokeHostFunctionOperationBuilder createTokenContractOperationBuilder( + Address address, @Nullable byte[] salt) { + if (salt == null) { + salt = new byte[32]; + new SecureRandom().nextBytes(salt); + } else if (salt.length != 32) { + throw new IllegalArgumentException("\"salt\" must be 32 bytes long"); + } + + CreateContractArgs createContractArgs = + new CreateContractArgs.Builder() + .contractIDPreimage( + new ContractIDPreimage.Builder() + .discriminant(ContractIDPreimageType.CONTRACT_ID_PREIMAGE_FROM_ADDRESS) + .fromAddress( + new ContractIDPreimage.ContractIDPreimageFromAddress.Builder() + .address(address.toSCAddress()) + .salt(new Uint256(salt)) + .build()) + .build()) + .executable( + new ContractExecutable.Builder() + .discriminant(ContractExecutableType.CONTRACT_EXECUTABLE_TOKEN) + .build()) + .build(); + HostFunction hostFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + return builder().hostFunction(hostFunction); + } + + /** + * This function will create an {@link InvokeHostFunctionOperationBuilder} with the "hostFunction" + * parameter preset, so that you can conveniently build an {@link InvokeHostFunctionOperation} to + * invoke a contract function. + * + * @see Interacting with Contracts + * @param contractId The ID of the contract to invoke. + * @param functionName The name of the function to invoke. + * @param parameters The parameters to pass to the method. + * @return {@link InvokeHostFunctionOperationBuilder} + */ + public static InvokeHostFunctionOperationBuilder invokeContractFunctionOperationBuilder( + String contractId, String functionName, @Nullable Collection parameters) { + Address address = new Address(contractId); + if (address.getType() != Address.AddressType.CONTRACT) { + throw new IllegalArgumentException("\"contractId\" must be a contract address"); + } + SCVal contractIdScVal = address.toSCVal(); + SCVal functionNameScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_SYMBOL) + .sym(new SCSymbol(new XdrString(functionName))) + .build(); + + List invokeContractParams = + new ArrayList<>(2 + (parameters != null ? parameters.size() : 0)); + invokeContractParams.add(contractIdScVal); + invokeContractParams.add(functionNameScVal); + if (parameters != null) { + for (SCVal parameter : parameters) { + if (parameter == null) { + throw new IllegalArgumentException("\"parameters\" contains null element"); + } + invokeContractParams.add(parameter); + } + } + + HostFunction hostFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_INVOKE_CONTRACT) + .invokeContract(new SCVec(invokeContractParams.toArray(new SCVal[0]))) + .build(); + return builder().hostFunction(hostFunction); + } + @Override org.stellar.sdk.xdr.Operation.OperationBody toOperationBody(AccountConverter accountConverter) { InvokeHostFunctionOp op = new InvokeHostFunctionOp(); diff --git a/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java b/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java index 7b08fe9dd..4e7099e49 100644 --- a/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java +++ b/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java @@ -1,10 +1,37 @@ package org.stellar.sdk; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import java.util.Arrays; import java.util.Collections; +import java.util.List; import org.junit.Test; -import org.stellar.sdk.xdr.*; +import org.stellar.sdk.xdr.ContractExecutable; +import org.stellar.sdk.xdr.ContractExecutableType; +import org.stellar.sdk.xdr.ContractIDPreimage; +import org.stellar.sdk.xdr.ContractIDPreimageType; +import org.stellar.sdk.xdr.CreateContractArgs; +import org.stellar.sdk.xdr.Hash; +import org.stellar.sdk.xdr.HostFunction; +import org.stellar.sdk.xdr.HostFunctionType; +import org.stellar.sdk.xdr.Int64; +import org.stellar.sdk.xdr.SCSymbol; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.SCVec; +import org.stellar.sdk.xdr.SorobanAddressCredentials; +import org.stellar.sdk.xdr.SorobanAuthorizationEntry; +import org.stellar.sdk.xdr.SorobanAuthorizedFunction; +import org.stellar.sdk.xdr.SorobanAuthorizedFunctionType; +import org.stellar.sdk.xdr.SorobanAuthorizedInvocation; +import org.stellar.sdk.xdr.SorobanCredentials; +import org.stellar.sdk.xdr.SorobanCredentialsType; +import org.stellar.sdk.xdr.Uint256; +import org.stellar.sdk.xdr.Uint32; +import org.stellar.sdk.xdr.XdrString; public class InvokeHostFunctionOperationTest { CreateContractArgs createContractArgs = @@ -255,4 +282,233 @@ public void testNotEqualsSource() { InvokeHostFunctionOperation.builder().hostFunction(hostFunction).build(); assertNotEquals(operation1, operation2); } + + @Test + public void testUploadContractWasmOperationBuilder() { + byte[] wasm = new byte[] {0x00, 0x01, 0x02, 0x03, 0x34, 0x45, 0x66, 0x46}; + InvokeHostFunctionOperation operation = + InvokeHostFunctionOperation.uploadContractWasmOperationBuilder(wasm).build(); + HostFunction expectedFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM) + .wasm(wasm) + .build(); + assertEquals(operation.getHostFunction(), expectedFunction); + assertTrue(operation.getAuth().isEmpty()); + assertNull(operation.getSourceAccount()); + String expectedXdr = "AAAAAAAAABgAAAACAAAACAABAgM0RWZGAAAAAA=="; + assertEquals(expectedXdr, operation.toXdrBase64()); + } + + @Test + public void createContractOperationBuilderWithWasmIdString() { + byte[] wasmId = + new byte[] { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f + }; + String wasmIdString = Util.bytesToHex(wasmId); + byte[] salt = + new byte[] { + 0x11, 0x33, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f + }; + Address address = new Address("GAHJJJKMOKYE4RVPZEWZTKH5FVI4PA3VL7GK2LFNUBSGBV6OJP7TQSLX"); + InvokeHostFunctionOperation operation = + InvokeHostFunctionOperation.createContractOperationBuilder(wasmIdString, address, salt) + .build(); + + CreateContractArgs createContractArgs = + new CreateContractArgs.Builder() + .contractIDPreimage( + new ContractIDPreimage.Builder() + .discriminant(ContractIDPreimageType.CONTRACT_ID_PREIMAGE_FROM_ADDRESS) + .fromAddress( + new ContractIDPreimage.ContractIDPreimageFromAddress.Builder() + .address(address.toSCAddress()) + .salt(new Uint256(salt)) + .build()) + .build()) + .executable( + new ContractExecutable.Builder() + .discriminant(ContractExecutableType.CONTRACT_EXECUTABLE_WASM) + .wasm_hash(new Hash(wasmId)) + .build()) + .build(); + HostFunction expectedFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + + assertEquals(operation.getHostFunction(), expectedFunction); + assertTrue(operation.getAuth().isEmpty()); + assertNull(operation.getSourceAccount()); + String expectedXdr = + "AAAAAAAAABgAAAABAAAAAAAAAAAAAAAADpSlTHKwTkavyS2ZqP0tUceDdV/MrSytoGRg185L/zgRMwIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHwAAAAAAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHwAAAAA="; + assertEquals(expectedXdr, operation.toXdrBase64()); + } + + @Test + public void createContractOperationBuilderWithWasmIdBytes() { + byte[] wasmId = + new byte[] { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f + }; + byte[] salt = + new byte[] { + 0x11, 0x33, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f + }; + Address address = new Address("GAHJJJKMOKYE4RVPZEWZTKH5FVI4PA3VL7GK2LFNUBSGBV6OJP7TQSLX"); + InvokeHostFunctionOperation operation = + InvokeHostFunctionOperation.createContractOperationBuilder(wasmId, address, salt).build(); + + CreateContractArgs createContractArgs = + new CreateContractArgs.Builder() + .contractIDPreimage( + new ContractIDPreimage.Builder() + .discriminant(ContractIDPreimageType.CONTRACT_ID_PREIMAGE_FROM_ADDRESS) + .fromAddress( + new ContractIDPreimage.ContractIDPreimageFromAddress.Builder() + .address(address.toSCAddress()) + .salt(new Uint256(salt)) + .build()) + .build()) + .executable( + new ContractExecutable.Builder() + .discriminant(ContractExecutableType.CONTRACT_EXECUTABLE_WASM) + .wasm_hash(new Hash(wasmId)) + .build()) + .build(); + HostFunction expectedFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + + assertEquals(operation.getHostFunction(), expectedFunction); + assertTrue(operation.getAuth().isEmpty()); + assertNull(operation.getSourceAccount()); + String expectedXdr = + "AAAAAAAAABgAAAABAAAAAAAAAAAAAAAADpSlTHKwTkavyS2ZqP0tUceDdV/MrSytoGRg185L/zgRMwIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHwAAAAAAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHwAAAAA="; + assertEquals(expectedXdr, operation.toXdrBase64()); + } + + @Test + public void createTokenContractOperationBuilderWithAddress() { + Address address = new Address("GAHJJJKMOKYE4RVPZEWZTKH5FVI4PA3VL7GK2LFNUBSGBV6OJP7TQSLX"); + byte[] salt = + new byte[] { + 0x11, 0x33, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, + 0x1e, 0x1f + }; + InvokeHostFunctionOperation operation = + InvokeHostFunctionOperation.createTokenContractOperationBuilder(address, salt).build(); + CreateContractArgs createContractArgs = + new CreateContractArgs.Builder() + .contractIDPreimage( + new ContractIDPreimage.Builder() + .discriminant(ContractIDPreimageType.CONTRACT_ID_PREIMAGE_FROM_ADDRESS) + .fromAddress( + new ContractIDPreimage.ContractIDPreimageFromAddress.Builder() + .address(address.toSCAddress()) + .salt(new Uint256(salt)) + .build()) + .build()) + .executable( + new ContractExecutable.Builder() + .discriminant(ContractExecutableType.CONTRACT_EXECUTABLE_TOKEN) + .build()) + .build(); + HostFunction expectedFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + + assertEquals(operation.getHostFunction(), expectedFunction); + assertTrue(operation.getAuth().isEmpty()); + assertNull(operation.getSourceAccount()); + String expectedXdr = + "AAAAAAAAABgAAAABAAAAAAAAAAAAAAAADpSlTHKwTkavyS2ZqP0tUceDdV/MrSytoGRg185L/zgRMwIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHwAAAAEAAAAA"; + assertEquals(expectedXdr, operation.toXdrBase64()); + } + + @Test + public void createTokenContractOperationBuilderWithAsset() { + Asset asset = + new AssetTypeCreditAlphaNum4( + "CAT", "GAHJJJKMOKYE4RVPZEWZTKH5FVI4PA3VL7GK2LFNUBSGBV6OJP7TQSLX"); + InvokeHostFunctionOperation operation = + InvokeHostFunctionOperation.createTokenContractOperationBuilder(asset).build(); + CreateContractArgs createContractArgs = + new CreateContractArgs.Builder() + .contractIDPreimage( + new ContractIDPreimage.Builder() + .discriminant(ContractIDPreimageType.CONTRACT_ID_PREIMAGE_FROM_ASSET) + .fromAsset(asset.toXdr()) + .build()) + .executable( + new ContractExecutable.Builder() + .discriminant(ContractExecutableType.CONTRACT_EXECUTABLE_TOKEN) + .build()) + .build(); + HostFunction expectedFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_CREATE_CONTRACT) + .createContract(createContractArgs) + .build(); + + assertEquals(operation.getHostFunction(), expectedFunction); + assertTrue(operation.getAuth().isEmpty()); + assertNull(operation.getSourceAccount()); + String expectedXdr = + "AAAAAAAAABgAAAABAAAAAQAAAAFDQVQAAAAAAA6UpUxysE5Gr8ktmaj9LVHHg3VfzK0sraBkYNfOS/84AAAAAQAAAAA="; + assertEquals(expectedXdr, operation.toXdrBase64()); + } + + @Test + public void invokeContractFunctionOperationBuilder() { + String contractId = "CA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUWDA"; + String funcName = "hello"; + List parameters = + Collections.singletonList( + new SCVal.Builder() + .discriminant(SCValType.SCV_SYMBOL) + .sym(new SCSymbol(new XdrString("world"))) + .build()); + InvokeHostFunctionOperation operation = + InvokeHostFunctionOperation.invokeContractFunctionOperationBuilder( + contractId, funcName, parameters) + .build(); + + SCVal contractIdScVal = new Address(contractId).toSCVal(); + SCVal functionNameScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_SYMBOL) + .sym(new SCSymbol(new XdrString(funcName))) + .build(); + SCVal paramScVal = parameters.get(0); + List invokeContractParams = + Arrays.asList(contractIdScVal, functionNameScVal, paramScVal); + HostFunction expectedFunction = + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_INVOKE_CONTRACT) + .invokeContract(new SCVec(invokeContractParams.toArray(new SCVal[0]))) + .build(); + + assertEquals(operation.getHostFunction(), expectedFunction); + assertTrue(operation.getAuth().isEmpty()); + assertNull(operation.getSourceAccount()); + String expectedXdr = + "AAAAAAAAABgAAAAAAAAAAwAAABIAAAABPww0v5OtDZlx0EzMkPcFURyDiq2XNKSi+w16A/x/6JoAAAAPAAAABWhlbGxvAAAAAAAADwAAAAV3b3JsZAAAAAAAAAA="; + assertEquals(expectedXdr, operation.toXdrBase64()); + } } From 25dc8a8fa3b38fc6a12fa212ee1b51665a113135 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Wed, 2 Aug 2023 23:00:44 +0800 Subject: [PATCH 05/29] Added support for calling Soroban RPC server. (#492) --- .../org/stellar/sdk/AbstractTransaction.java | 9 + .../stellar/sdk/AccountNotFoundException.java | 15 + src/main/java/org/stellar/sdk/Network.java | 4 + .../sdk/PrepareTransactionException.java | 17 + .../java/org/stellar/sdk/SorobanServer.java | 526 ++++++ .../java/org/stellar/sdk/Transaction.java | 16 + .../requests/sorobanrpc/EventFilterType.java | 13 + .../requests/sorobanrpc/GetEventsRequest.java | 43 + .../sorobanrpc/GetLedgerEntriesRequest.java | 17 + .../sorobanrpc/GetTransactionRequest.java | 16 + .../sorobanrpc/SendTransactionRequest.java | 16 + .../SimulateTransactionRequest.java | 16 + .../sorobanrpc/SorobanRpcErrorResponse.java | 25 + .../sorobanrpc/SorobanRpcRequest.java | 24 + .../stellar/sdk/responses/GsonSingleton.java | 2 + .../sorobanrpc/GetEventsResponse.java | 48 + .../sorobanrpc/GetHealthResponse.java | 16 + .../sorobanrpc/GetLatestLedgerResponse.java | 20 + .../sorobanrpc/GetLedgerEntriesResponse.java | 31 + .../sorobanrpc/GetNetworkResponse.java | 20 + .../sorobanrpc/GetTransactionResponse.java | 44 + .../sorobanrpc/SendTransactionResponse.java | 31 + .../SimulateTransactionResponse.java | 49 + .../sorobanrpc/SorobanRpcResponse.java | 36 + .../org/stellar/sdk/SorobanServerTest.java | 1420 +++++++++++++++++ .../sorobanrpc/GetEventsDeserializerTest.java | 98 ++ .../sorobanrpc/GetHealthDeserializerTest.java | 27 + .../GetLatestLedgerDeserializerTest.java | 33 + .../GetLedgerEntriesDeserializerTest.java | 73 + .../GetNetworkDeserializerTest.java | 32 + .../GetTransactionDeserializerTest.java | 149 ++ .../SendTransactionDeserializerTest.java | 123 ++ .../SimulateTransactionDeserializerTest.java | 104 ++ .../SorobanRpcDeserializerTest.java | 56 + 34 files changed, 3169 insertions(+) create mode 100644 src/main/java/org/stellar/sdk/AccountNotFoundException.java create mode 100644 src/main/java/org/stellar/sdk/PrepareTransactionException.java create mode 100644 src/main/java/org/stellar/sdk/SorobanServer.java create mode 100644 src/main/java/org/stellar/sdk/requests/sorobanrpc/EventFilterType.java create mode 100644 src/main/java/org/stellar/sdk/requests/sorobanrpc/GetEventsRequest.java create mode 100644 src/main/java/org/stellar/sdk/requests/sorobanrpc/GetLedgerEntriesRequest.java create mode 100644 src/main/java/org/stellar/sdk/requests/sorobanrpc/GetTransactionRequest.java create mode 100644 src/main/java/org/stellar/sdk/requests/sorobanrpc/SendTransactionRequest.java create mode 100644 src/main/java/org/stellar/sdk/requests/sorobanrpc/SimulateTransactionRequest.java create mode 100644 src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcErrorResponse.java create mode 100644 src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcRequest.java create mode 100644 src/main/java/org/stellar/sdk/responses/sorobanrpc/GetEventsResponse.java create mode 100644 src/main/java/org/stellar/sdk/responses/sorobanrpc/GetHealthResponse.java create mode 100644 src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerResponse.java create mode 100644 src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLedgerEntriesResponse.java create mode 100644 src/main/java/org/stellar/sdk/responses/sorobanrpc/GetNetworkResponse.java create mode 100644 src/main/java/org/stellar/sdk/responses/sorobanrpc/GetTransactionResponse.java create mode 100644 src/main/java/org/stellar/sdk/responses/sorobanrpc/SendTransactionResponse.java create mode 100644 src/main/java/org/stellar/sdk/responses/sorobanrpc/SimulateTransactionResponse.java create mode 100644 src/main/java/org/stellar/sdk/responses/sorobanrpc/SorobanRpcResponse.java create mode 100644 src/test/java/org/stellar/sdk/SorobanServerTest.java create mode 100644 src/test/java/org/stellar/sdk/responses/sorobanrpc/GetEventsDeserializerTest.java create mode 100644 src/test/java/org/stellar/sdk/responses/sorobanrpc/GetHealthDeserializerTest.java create mode 100644 src/test/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerDeserializerTest.java create mode 100644 src/test/java/org/stellar/sdk/responses/sorobanrpc/GetLedgerEntriesDeserializerTest.java create mode 100644 src/test/java/org/stellar/sdk/responses/sorobanrpc/GetNetworkDeserializerTest.java create mode 100644 src/test/java/org/stellar/sdk/responses/sorobanrpc/GetTransactionDeserializerTest.java create mode 100644 src/test/java/org/stellar/sdk/responses/sorobanrpc/SendTransactionDeserializerTest.java create mode 100644 src/test/java/org/stellar/sdk/responses/sorobanrpc/SimulateTransactionDeserializerTest.java create mode 100644 src/test/java/org/stellar/sdk/responses/sorobanrpc/SorobanRpcDeserializerTest.java diff --git a/src/main/java/org/stellar/sdk/AbstractTransaction.java b/src/main/java/org/stellar/sdk/AbstractTransaction.java index c18110f8d..0cef65a2c 100644 --- a/src/main/java/org/stellar/sdk/AbstractTransaction.java +++ b/src/main/java/org/stellar/sdk/AbstractTransaction.java @@ -85,6 +85,15 @@ public Network getNetwork() { return mNetwork; } + /** + * Gets the {@link AccountConverter} for this transaction. + * + * @return the {@link AccountConverter} object + */ + public AccountConverter getAccountConverter() { + return accountConverter; + } + /** * Gets read only list(immutable) of the signatures on transaction. * diff --git a/src/main/java/org/stellar/sdk/AccountNotFoundException.java b/src/main/java/org/stellar/sdk/AccountNotFoundException.java new file mode 100644 index 000000000..fd028d2a8 --- /dev/null +++ b/src/main/java/org/stellar/sdk/AccountNotFoundException.java @@ -0,0 +1,15 @@ +package org.stellar.sdk; + +import lombok.Getter; + +/** Exception thrown when trying to load an account that doesn't exist on the Stellar network. */ +@Getter +public class AccountNotFoundException extends Exception { + // The account that was not found. + private final String accountId; + + public AccountNotFoundException(String accountId) { + super("Account not found, accountId: " + accountId); + this.accountId = accountId; + } +} diff --git a/src/main/java/org/stellar/sdk/Network.java b/src/main/java/org/stellar/sdk/Network.java index f1a4e50dc..d82eaad71 100644 --- a/src/main/java/org/stellar/sdk/Network.java +++ b/src/main/java/org/stellar/sdk/Network.java @@ -13,6 +13,10 @@ public class Network { public static final Network PUBLIC = new Network("Public Global Stellar Network ; September 2015"); public static final Network TESTNET = new Network("Test SDF Network ; September 2015"); + public static final Network FUTURENET = new Network("Test SDF Future Network ; October 2022"); + public static final Network STANDALONE = new Network("Standalone Network ; February 2017"); + public static final Network SANDBOX = + new Network("Local Sandbox Stellar Network ; September 2022"); private final String networkPassphrase; diff --git a/src/main/java/org/stellar/sdk/PrepareTransactionException.java b/src/main/java/org/stellar/sdk/PrepareTransactionException.java new file mode 100644 index 000000000..63871a11e --- /dev/null +++ b/src/main/java/org/stellar/sdk/PrepareTransactionException.java @@ -0,0 +1,17 @@ +package org.stellar.sdk; + +import lombok.Getter; +import org.stellar.sdk.responses.sorobanrpc.SimulateTransactionResponse; + +/** Exception thrown when preparing a transaction failed. */ +@Getter +public class PrepareTransactionException extends Exception { + // The response returned by the Soroban-RPC instance when simulating the transaction. + private final SimulateTransactionResponse simulateTransactionResponse; + + public PrepareTransactionException( + String message, SimulateTransactionResponse simulateTransactionResponse) { + super(message); + this.simulateTransactionResponse = simulateTransactionResponse; + } +} diff --git a/src/main/java/org/stellar/sdk/SorobanServer.java b/src/main/java/org/stellar/sdk/SorobanServer.java new file mode 100644 index 000000000..f1b81fe99 --- /dev/null +++ b/src/main/java/org/stellar/sdk/SorobanServer.java @@ -0,0 +1,526 @@ +package org.stellar.sdk; + +import com.google.common.io.BaseEncoding; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.Closeable; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; +import javax.annotation.Nullable; +import okhttp3.HttpUrl; +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import org.stellar.sdk.requests.ClientIdentificationInterceptor; +import org.stellar.sdk.requests.ResponseHandler; +import org.stellar.sdk.requests.sorobanrpc.GetEventsRequest; +import org.stellar.sdk.requests.sorobanrpc.GetLedgerEntriesRequest; +import org.stellar.sdk.requests.sorobanrpc.GetTransactionRequest; +import org.stellar.sdk.requests.sorobanrpc.SendTransactionRequest; +import org.stellar.sdk.requests.sorobanrpc.SimulateTransactionRequest; +import org.stellar.sdk.requests.sorobanrpc.SorobanRpcErrorResponse; +import org.stellar.sdk.requests.sorobanrpc.SorobanRpcRequest; +import org.stellar.sdk.responses.sorobanrpc.GetEventsResponse; +import org.stellar.sdk.responses.sorobanrpc.GetHealthResponse; +import org.stellar.sdk.responses.sorobanrpc.GetLatestLedgerResponse; +import org.stellar.sdk.responses.sorobanrpc.GetLedgerEntriesResponse; +import org.stellar.sdk.responses.sorobanrpc.GetNetworkResponse; +import org.stellar.sdk.responses.sorobanrpc.GetTransactionResponse; +import org.stellar.sdk.responses.sorobanrpc.SendTransactionResponse; +import org.stellar.sdk.responses.sorobanrpc.SimulateTransactionResponse; +import org.stellar.sdk.responses.sorobanrpc.SorobanRpcResponse; +import org.stellar.sdk.xdr.ContractDataDurability; +import org.stellar.sdk.xdr.ContractEntryBodyType; +import org.stellar.sdk.xdr.LedgerEntry; +import org.stellar.sdk.xdr.LedgerEntryType; +import org.stellar.sdk.xdr.LedgerKey; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SorobanAuthorizationEntry; +import org.stellar.sdk.xdr.SorobanTransactionData; +import org.stellar.sdk.xdr.XdrDataInputStream; +import org.stellar.sdk.xdr.XdrDataOutputStream; + +/** + * Main class used to connect to the Soroban-RPC instance and exposes an interface for requests to + * that instance. + */ +public class SorobanServer implements Closeable { + private static final int SUBMIT_TRANSACTION_TIMEOUT = 60; // seconds + private static final int CONNECT_TIMEOUT = 10; // seconds + private final HttpUrl serverURI; + private final OkHttpClient httpClient; + private final Gson gson = new Gson(); + + /** + * Creates a new SorobanServer instance. + * + * @param serverURI The URI of the Soroban-RPC instance to connect to. + */ + public SorobanServer(String serverURI) { + this( + serverURI, + new OkHttpClient.Builder() + .addInterceptor(new ClientIdentificationInterceptor()) + .connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS) + .readTimeout(SUBMIT_TRANSACTION_TIMEOUT, TimeUnit.SECONDS) + .retryOnConnectionFailure(true) + .build()); + } + + /** + * Creates a new SorobanServer instance. + * + * @param serverURI The URI of the Soroban-RPC instance to connect to. + * @param httpClient The {@link OkHttpClient} instance to use for requests. + */ + public SorobanServer(String serverURI, OkHttpClient httpClient) { + this.serverURI = HttpUrl.parse(serverURI); + this.httpClient = httpClient; + } + + /** + * Fetch a minimal set of current info about a Stellar account. Needed to get the current sequence + * number for the account, so you can build a successful transaction with {@link + * TransactionBuilder}. + * + * @param accountId The public address of the account to load. + * @return An {@link Account} object containing the sequence number and current state of the + * account. + * @throws IOException If the request could not be executed due to cancellation, a connectivity + * problem or timeout. Because networks can fail during an exchange, it is possible that the + * remote server accepted the request before the failure. + * @throws AccountNotFoundException If the account does not exist on the network. You may need to + * fund it first. + * @throws SorobanRpcErrorResponse If the Soroban-RPC instance returns an error response. + */ + public TransactionBuilderAccount getAccount(String accountId) + throws IOException, AccountNotFoundException, SorobanRpcErrorResponse { + LedgerKey.LedgerKeyAccount ledgerKeyAccount = + new LedgerKey.LedgerKeyAccount.Builder() + .accountID(KeyPair.fromAccountId(accountId).getXdrAccountId()) + .build(); + LedgerKey ledgerKey = + new LedgerKey.Builder() + .account(ledgerKeyAccount) + .discriminant(LedgerEntryType.ACCOUNT) + .build(); + GetLedgerEntriesResponse getLedgerEntriesResponse = + this.getLedgerEntries(Collections.singleton(ledgerKey)); + List entries = + getLedgerEntriesResponse.getEntries(); + if (entries == null || entries.isEmpty()) { + throw new AccountNotFoundException(accountId); + } + LedgerEntry.LedgerEntryData ledgerEntryData = + ledgerEntryDataFromXdrBase64(entries.get(0).getXdr()); + long sequence = ledgerEntryData.getAccount().getSeqNum().getSequenceNumber().getInt64(); + return new Account(accountId, sequence); + } + + /** + * General node health check. + * + * @see getHealth + * documentation + * @return A {@link GetHealthResponse} object containing the health check result. + * @throws IOException If the request could not be executed due to cancellation, a connectivity + * problem or timeout. Because networks can fail during an exchange, it is possible that the + * remote server accepted the request before the failure. + * @throws SorobanRpcErrorResponse If the Soroban-RPC instance returns an error response. + */ + public GetHealthResponse getHealth() throws IOException, SorobanRpcErrorResponse { + return this.sendRequest( + "getHealth", null, new TypeToken>() {}); + } + + /** + * Reads the current value of contract data ledger entries directly. + * + * @param contractId The contract ID containing the data to load. Encoded as Stellar Contract + * Address. e.g. "CCJZ5DGASBWQXR5MPFCJXMBI333XE5U3FSJTNQU7RIKE3P5GN2K2WYD5" + * @param key The key of the contract data to load. + * @param durability The "durability keyspace" that this ledger key belongs to, which is either + * {@link Durability#TEMPORARY} or {@link Durability#PERSISTENT}. + * @return A {@link GetLedgerEntriesResponse.LedgerEntryResult} object containing the ledger entry + * result. + * @throws IOException If the request could not be executed due to cancellation, a connectivity + * problem or timeout. Because networks can fail during an exchange, it is possible that the + * remote server accepted the request before the failure. + * @throws SorobanRpcErrorResponse If the Soroban-RPC instance returns an error response. + */ + public Optional getContractData( + String contractId, SCVal key, Durability durability) + throws IOException, SorobanRpcErrorResponse { + + ContractDataDurability contractDataDurability; + switch (durability) { + case TEMPORARY: + contractDataDurability = ContractDataDurability.TEMPORARY; + break; + case PERSISTENT: + contractDataDurability = ContractDataDurability.PERSISTENT; + break; + default: + throw new IllegalArgumentException("Invalid durability: " + durability); + } + + Address address = new Address(contractId); + LedgerKey.LedgerKeyContractData ledgerKeyContractData = + new LedgerKey.LedgerKeyContractData.Builder() + .contract(address.toSCAddress()) + .key(key) + .durability(contractDataDurability) + .bodyType(ContractEntryBodyType.DATA_ENTRY) + .build(); + LedgerKey ledgerKey = + new LedgerKey.Builder() + .discriminant(LedgerEntryType.CONTRACT_DATA) + .contractData(ledgerKeyContractData) + .build(); + GetLedgerEntriesResponse getLedgerEntriesResponse = + this.getLedgerEntries(Collections.singleton(ledgerKey)); + List entries = + getLedgerEntriesResponse.getEntries(); + if (entries == null || entries.isEmpty()) { + return Optional.empty(); + } + GetLedgerEntriesResponse.LedgerEntryResult result = entries.get(0); + return Optional.of(result); + } + + /** + * Reads the current value of ledger entries directly. + * + *

Allows you to directly inspect the current state of contracts, contract's code, or any other + * ledger entries. + * + * @see getLedgerEntries documentation + * @param keys The key of the contract data to load, at least one key must be provided. + * @return A {@link GetLedgerEntriesResponse} object containing the current values. + * @throws IOException If the request could not be executed due to cancellation, a connectivity + * problem or timeout. Because networks can fail during an exchange, it is possible that the + * remote server accepted the request before the failure. + * @throws SorobanRpcErrorResponse If the Soroban-RPC instance returns an error response. + */ + public GetLedgerEntriesResponse getLedgerEntries(Collection keys) + throws IOException, SorobanRpcErrorResponse { + if (keys.isEmpty()) { + throw new IllegalArgumentException("At least one key must be provided."); + } + + List xdrKeys = + keys.stream().map(SorobanServer::ledgerKeyToXdrBase64).collect(Collectors.toList()); + GetLedgerEntriesRequest params = new GetLedgerEntriesRequest(xdrKeys); + return this.sendRequest( + "getLedgerEntries", + params, + new TypeToken>() {}); + } + + /** + * Fetch the details of a submitted transaction. + * + *

When submitting a transaction, client should poll this to tell when the transaction has + * completed. + * + * @see getTransaction documentation + * @param hash The hash of the transaction to check. Encoded as a hex string. + * @return A {@link GetTransactionResponse} object containing the transaction status, result, and + * other details. + * @throws IOException If the request could not be executed due to cancellation, a connectivity + * problem or timeout. Because networks can fail during an exchange, it is possible that the + * remote server accepted the request before the failure. + * @throws SorobanRpcErrorResponse If the Soroban-RPC instance returns an error response. + */ + public GetTransactionResponse getTransaction(String hash) + throws IOException, SorobanRpcErrorResponse { + GetTransactionRequest params = new GetTransactionRequest(hash); + return this.sendRequest( + "getTransaction", params, new TypeToken>() {}); + } + + /** + * Fetches all events that match the given {@link GetEventsRequest}. + * + * @see getEvents + * documentation + * @param getEventsRequest The {@link GetEventsRequest} to use for the request. + * @return A {@link GetEventsResponse} object containing the events that match the request. + * @throws IOException If the request could not be executed due to cancellation, a connectivity + * problem or timeout. Because networks can fail during an exchange, it is possible that the + * remote server accepted the request before the failure. + * @throws SorobanRpcErrorResponse If the Soroban-RPC instance returns an error response. + */ + public GetEventsResponse getEvents(GetEventsRequest getEventsRequest) + throws IOException, SorobanRpcErrorResponse { + return this.sendRequest( + "getEvents", getEventsRequest, new TypeToken>() {}); + } + + /** + * Fetches metadata about the network which Soroban-RPC is connected to. + * + * @see getNetwork + * documentation + * @return A {@link GetNetworkResponse} object containing the network metadata. + * @throws IOException If the request could not be executed due to cancellation, a connectivity + * problem or timeout. Because networks can fail during an exchange, it is possible that the + * remote server accepted the request before the failure. + * @throws SorobanRpcErrorResponse If the Soroban-RPC instance returns an error response. + */ + public GetNetworkResponse getNetwork() throws IOException, SorobanRpcErrorResponse { + return this.sendRequest( + "getNetwork", null, new TypeToken>() {}); + } + + /** + * Fetches the latest ledger meta info from network which Soroban-RPC is connected to. + * + * @see getLatestLedger documentation + * @return A {@link GetLatestLedgerResponse} object containing the latest ledger meta info. + * @throws IOException If the request could not be executed due to cancellation, a connectivity + * problem or timeout. Because networks can fail during an exchange, it is possible that the + * remote server accepted the request before the failure. + * @throws SorobanRpcErrorResponse If the Soroban-RPC instance returns an error response. + */ + public GetLatestLedgerResponse getLatestLedger() throws IOException, SorobanRpcErrorResponse { + return this.sendRequest( + "getLatestLedger", null, new TypeToken>() {}); + } + + /** + * Submit a trial contract invocation to get back return values, expected ledger footprint, + * expected authorizations, and expected costs. + * + * @see simulateTransaction documentation + * @param transaction The transaction to simulate. It should include exactly one operation, which + * must be one of {@link InvokeHostFunctionOperation}, {@link + * BumpFootprintExpirationOperation}, or {@link RestoreFootprintOperation}. Any provided + * footprint will be ignored. + * @return A {@link SimulateTransactionResponse} object containing the cost, footprint, + * result/auth requirements (if applicable), and error of the transaction. + * @throws IOException If the request could not be executed due to cancellation, a connectivity + * problem or timeout. Because networks can fail during an exchange, it is possible that the + * remote server accepted the request before the failure. + * @throws SorobanRpcErrorResponse If the Soroban-RPC instance returns an error response. + */ + public SimulateTransactionResponse simulateTransaction(Transaction transaction) + throws IOException, SorobanRpcErrorResponse { + // TODO: In the future, it may be necessary to consider FeeBumpTransaction. + SimulateTransactionRequest params = + new SimulateTransactionRequest(transaction.toEnvelopeXdrBase64()); + return this.sendRequest( + "simulateTransaction", + params, + new TypeToken>() {}); + } + + /** + * Submit a trial contract invocation, first run a simulation of the contract invocation as + * defined on the incoming transaction, and apply the results to a new copy of the transaction + * which is then returned. Setting the ledger footprint and authorization, so the resulting + * transaction is ready for signing & sending. + * + *

The returned transaction will also have an updated fee that is the sum of fee set on + * incoming transaction with the contract resource fees estimated from simulation. It is advisable + * to check the fee on returned transaction and validate or take appropriate measures for + * interaction with user to confirm it is acceptable. + * + *

You can call the {@link SorobanServer#simulateTransaction} method directly first if you want + * to inspect estimated fees for a given transaction in detail first, if that is of importance. + * + * @param transaction The transaction to prepare. It should include exactly one operation, which + * must be one of {@link InvokeHostFunctionOperation}, {@link + * BumpFootprintExpirationOperation}, or {@link RestoreFootprintOperation}. Any provided + * footprint will be ignored. You can use {@link Transaction#isSorobanTransaction()} to check + * if a transaction is a Soroban transaction. + * @return Returns a copy of the {@link Transaction}, with the expected authorizations (in the + * case of invocation) and ledger footprint added. The transaction fee will also automatically + * be padded with the contract's minimum resource fees discovered from the simulation. + * @throws PrepareTransactionException If preparing the transaction fails. + * @throws IOException If the request could not be executed due to cancellation, a connectivity + * problem or timeout. Because networks can fail during an exchange, it is possible that the + * remote server accepted the request before the failure. + * @throws SorobanRpcErrorResponse If the Soroban-RPC instance returns an error response. + */ + public Transaction prepareTransaction(Transaction transaction) + throws IOException, SorobanRpcErrorResponse, PrepareTransactionException { + SimulateTransactionResponse simulateTransactionResponse = this.simulateTransaction(transaction); + if (simulateTransactionResponse.getError() != null) { + throw new PrepareTransactionException( + "simulation transaction failed, the response contains error information.", + simulateTransactionResponse); + } + if (simulateTransactionResponse.getResults() == null + || simulateTransactionResponse.getResults().size() != 1) { + throw new PrepareTransactionException( + "simulation transaction failed, the \"results\" field contains multiple records, but it should only contain one.", + simulateTransactionResponse); + } + return assembleTransaction(transaction, simulateTransactionResponse); + } + + /** + * Submit a real transaction to the Stellar network. This is the only way to make changes + * "on-chain". Unlike Horizon, Soroban-RPC does not wait for transaction completion. It simply + * validates the transaction and enqueues it. Clients should call {@link + * SorobanServer#getTransaction} to learn about transaction's status. + * + * @see sendTransaction documentation + * @param transaction The transaction to submit. + * @return A {@link SendTransactionResponse} object containing some details about the transaction + * that was submitted. + * @throws IOException If the request could not be executed due to cancellation, a connectivity + * problem or timeout. Because networks can fail during an exchange, it is possible that the + * remote server accepted the request before the failure. + * @throws SorobanRpcErrorResponse If the Soroban-RPC instance returns an error response. + */ + public SendTransactionResponse sendTransaction(Transaction transaction) + throws IOException, SorobanRpcErrorResponse { + // TODO: In the future, it may be necessary to consider FeeBumpTransaction. + SendTransactionRequest params = new SendTransactionRequest(transaction.toEnvelopeXdrBase64()); + return this.sendRequest( + "sendTransaction", params, new TypeToken>() {}); + } + + private Transaction assembleTransaction( + Transaction transaction, SimulateTransactionResponse simulateTransactionResponse) { + if (!transaction.isSorobanTransaction()) { + throw new IllegalArgumentException( + "unsupported transaction: must contain exactly one InvokeHostFunctionOperation, BumpSequenceOperation, or RestoreFootprintOperation"); + } + + SimulateTransactionResponse.SimulateHostFunctionResult simulateHostFunctionResult = + simulateTransactionResponse.getResults().get(0); + + long classicFeeNum = transaction.getFee(); + long minResourceFeeNum = + Optional.ofNullable(simulateTransactionResponse.getMinResourceFee()).orElse(0L); + long fee = classicFeeNum + minResourceFeeNum; + Operation operation = transaction.getOperations()[0]; + + if (operation instanceof InvokeHostFunctionOperation) { + Collection originalEntries = + ((InvokeHostFunctionOperation) operation).getAuth(); + List newEntries = new ArrayList<>(originalEntries); + if (simulateHostFunctionResult.getAuth() != null) { + for (String auth : simulateHostFunctionResult.getAuth()) { + newEntries.add(sorobanAuthorizationEntryFromXdrBase64(auth)); + } + } + operation = + InvokeHostFunctionOperation.builder() + .hostFunction(((InvokeHostFunctionOperation) operation).getHostFunction()) + .sourceAccount(operation.getSourceAccount()) + .auth(newEntries) + .build(); + } + + SorobanTransactionData sorobanData = + Util.sorobanTransactionDataToXDR(simulateTransactionResponse.getTransactionData()); + + return new Transaction( + transaction.getAccountConverter(), + transaction.getSourceAccount(), + fee, + transaction.getSequenceNumber(), + new Operation[] {operation}, + transaction.getMemo(), + transaction.getPreconditions(), + sorobanData, + transaction.getNetwork()); + } + + private R sendRequest( + String method, @Nullable T params, TypeToken> responseType) + throws IOException, SorobanRpcErrorResponse { + String requestId = generateRequestId(); + ResponseHandler> responseHandler = new ResponseHandler<>(responseType); + SorobanRpcRequest sorobanRpcRequest = new SorobanRpcRequest<>(requestId, method, params); + MediaType mediaType = MediaType.parse("application/json"); + RequestBody requestBody = + RequestBody.create(gson.toJson(sorobanRpcRequest).getBytes(), mediaType); + + Request request = new Request.Builder().url(this.serverURI).post(requestBody).build(); + try (Response response = this.httpClient.newCall(request).execute()) { + SorobanRpcResponse sorobanRpcResponse = responseHandler.handleResponse(response); + if (sorobanRpcResponse.getError() != null) { + SorobanRpcResponse.Error error = sorobanRpcResponse.getError(); + throw new SorobanRpcErrorResponse(error.getCode(), error.getMessage(), error.getData()); + } + return sorobanRpcResponse.getResult(); + } + } + + @Override + public void close() throws IOException { + this.httpClient.connectionPool().evictAll(); + } + + private static String generateRequestId() { + return UUID.randomUUID().toString(); + } + + private static String ledgerKeyToXdrBase64(LedgerKey ledgerKey) { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + try { + ledgerKey.encode(xdrDataOutputStream); + } catch (IOException e) { + throw new IllegalArgumentException("invalid ledgerKey.", e); + } + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(byteArrayOutputStream.toByteArray()); + } + + private static LedgerEntry.LedgerEntryData ledgerEntryDataFromXdrBase64(String ledgerEntryData) { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(ledgerEntryData); + ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); + XdrDataInputStream xdrInputStream = new XdrDataInputStream(inputStream); + try { + return LedgerEntry.LedgerEntryData.decode(xdrInputStream); + } catch (IOException e) { + throw new IllegalArgumentException("invalid ledgerEntryData: " + ledgerEntryData, e); + } + } + + private static SorobanAuthorizationEntry sorobanAuthorizationEntryFromXdrBase64( + String sorobanAuthorizationEntry) { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(sorobanAuthorizationEntry); + ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); + XdrDataInputStream xdrInputStream = new XdrDataInputStream(inputStream); + try { + return SorobanAuthorizationEntry.decode(xdrInputStream); + } catch (IOException e) { + throw new IllegalArgumentException( + "invalid ledgerEntryData: " + sorobanAuthorizationEntry, e); + } + } + + /** + * Represents the "durability keyspace" that this ledger key belongs to, check {@link + * SorobanServer#getContractData} for more details. + */ + public enum Durability { + TEMPORARY, + PERSISTENT + } +} diff --git a/src/main/java/org/stellar/sdk/Transaction.java b/src/main/java/org/stellar/sdk/Transaction.java index fe3409013..430bef521 100644 --- a/src/main/java/org/stellar/sdk/Transaction.java +++ b/src/main/java/org/stellar/sdk/Transaction.java @@ -388,4 +388,20 @@ public Builder(TransactionBuilderAccount sourceAccount, Network network) { super(sourceAccount, network); } } + + /** + * Returns true if this transaction is a Soroban transaction. + * + * @return true if this transaction is a Soroban transaction. + */ + public boolean isSorobanTransaction() { + if (mOperations.length != 1) { + return false; + } + + Operation op = mOperations[0]; + return op instanceof InvokeHostFunctionOperation + || op instanceof BumpSequenceOperation + || op instanceof RestoreFootprintOperation; + } } diff --git a/src/main/java/org/stellar/sdk/requests/sorobanrpc/EventFilterType.java b/src/main/java/org/stellar/sdk/requests/sorobanrpc/EventFilterType.java new file mode 100644 index 000000000..bb50bccf8 --- /dev/null +++ b/src/main/java/org/stellar/sdk/requests/sorobanrpc/EventFilterType.java @@ -0,0 +1,13 @@ +package org.stellar.sdk.requests.sorobanrpc; + +import com.google.gson.annotations.SerializedName; + +/** Represents the type of event. */ +public enum EventFilterType { + @SerializedName("system") + SYSTEM, + @SerializedName("contract") + CONTRACT, + @SerializedName("diagnostic") + DIAGNOSTIC +} diff --git a/src/main/java/org/stellar/sdk/requests/sorobanrpc/GetEventsRequest.java b/src/main/java/org/stellar/sdk/requests/sorobanrpc/GetEventsRequest.java new file mode 100644 index 000000000..d72c4039f --- /dev/null +++ b/src/main/java/org/stellar/sdk/requests/sorobanrpc/GetEventsRequest.java @@ -0,0 +1,43 @@ +package org.stellar.sdk.requests.sorobanrpc; + +import java.util.Collection; +import lombok.Builder; +import lombok.NonNull; +import lombok.Singular; +import lombok.Value; + +/** + * Request for JSON-RPC method getEvents. + * + * @see getEvents documentation + */ +@Value +@Builder(toBuilder = true) +public class GetEventsRequest { + @NonNull String startLedger; + + @Singular("filter") + Collection filters; + + PaginationOptions pagination; + + @Value + @Builder(toBuilder = true) + public static class PaginationOptions { + Long limit; + + String cursor; + } + + @Builder(toBuilder = true) + @Value + public static class EventFilter { + EventFilterType type; + + Collection contractIds; + + @Singular("topic") + Collection> topics; + } +} diff --git a/src/main/java/org/stellar/sdk/requests/sorobanrpc/GetLedgerEntriesRequest.java b/src/main/java/org/stellar/sdk/requests/sorobanrpc/GetLedgerEntriesRequest.java new file mode 100644 index 000000000..5620c174c --- /dev/null +++ b/src/main/java/org/stellar/sdk/requests/sorobanrpc/GetLedgerEntriesRequest.java @@ -0,0 +1,17 @@ +package org.stellar.sdk.requests.sorobanrpc; + +import java.util.Collection; +import lombok.AllArgsConstructor; +import lombok.Value; + +/** + * Request for JSON-RPC method getLedgerEntries. + * + * @see getLedgerEntries documentation + */ +@AllArgsConstructor +@Value +public class GetLedgerEntriesRequest { + Collection keys; +} diff --git a/src/main/java/org/stellar/sdk/requests/sorobanrpc/GetTransactionRequest.java b/src/main/java/org/stellar/sdk/requests/sorobanrpc/GetTransactionRequest.java new file mode 100644 index 000000000..980802249 --- /dev/null +++ b/src/main/java/org/stellar/sdk/requests/sorobanrpc/GetTransactionRequest.java @@ -0,0 +1,16 @@ +package org.stellar.sdk.requests.sorobanrpc; + +import lombok.AllArgsConstructor; +import lombok.Value; + +/** + * Request for JSON-RPC method getTransaction. + * + * @see getTransaction documentation + */ +@Value +@AllArgsConstructor +public class GetTransactionRequest { + String hash; +} diff --git a/src/main/java/org/stellar/sdk/requests/sorobanrpc/SendTransactionRequest.java b/src/main/java/org/stellar/sdk/requests/sorobanrpc/SendTransactionRequest.java new file mode 100644 index 000000000..4ebbecc55 --- /dev/null +++ b/src/main/java/org/stellar/sdk/requests/sorobanrpc/SendTransactionRequest.java @@ -0,0 +1,16 @@ +package org.stellar.sdk.requests.sorobanrpc; + +import lombok.AllArgsConstructor; +import lombok.Value; + +/** + * Request for JSON-RPC method sendTransaction. + * + * @see sendTransaction documentation + */ +@AllArgsConstructor +@Value +public class SendTransactionRequest { + String transaction; +} diff --git a/src/main/java/org/stellar/sdk/requests/sorobanrpc/SimulateTransactionRequest.java b/src/main/java/org/stellar/sdk/requests/sorobanrpc/SimulateTransactionRequest.java new file mode 100644 index 000000000..ebf4d631d --- /dev/null +++ b/src/main/java/org/stellar/sdk/requests/sorobanrpc/SimulateTransactionRequest.java @@ -0,0 +1,16 @@ +package org.stellar.sdk.requests.sorobanrpc; + +import lombok.AllArgsConstructor; +import lombok.Value; + +/** + * Request for JSON-RPC method simulateTransaction. + * + * @see simulateTransaction documentation + */ +@AllArgsConstructor +@Value +public class SimulateTransactionRequest { + String transaction; +} diff --git a/src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcErrorResponse.java b/src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcErrorResponse.java new file mode 100644 index 000000000..9ad3c7248 --- /dev/null +++ b/src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcErrorResponse.java @@ -0,0 +1,25 @@ +package org.stellar.sdk.requests.sorobanrpc; + +import lombok.Getter; + +/** + * Throws when Soroban-RPC instance responds with error. + * + * @see JSON-RPC 2.0 + * Specification - Error object + */ +@Getter +public class SorobanRpcErrorResponse extends Exception { + private final Integer code; + + private final String message; + + private final String data; + + public SorobanRpcErrorResponse(Integer code, String message, String data) { + super(message); + this.code = code; + this.message = message; + this.data = data; + } +} diff --git a/src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcRequest.java b/src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcRequest.java new file mode 100644 index 000000000..d3aa2e508 --- /dev/null +++ b/src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcRequest.java @@ -0,0 +1,24 @@ +package org.stellar.sdk.requests.sorobanrpc; + +import com.google.gson.annotations.SerializedName; +import lombok.RequiredArgsConstructor; +import lombok.Value; + +/** + * Represent the request sent to Soroban-RPC. + * + * @see JSON-RPC 2.0 + * Specification - Request object + */ +@RequiredArgsConstructor +@Value +public class SorobanRpcRequest { + @SerializedName("jsonrpc") + String jsonRpc = "2.0"; + + String id; + + String method; + + T params; +} diff --git a/src/main/java/org/stellar/sdk/responses/GsonSingleton.java b/src/main/java/org/stellar/sdk/responses/GsonSingleton.java index 2a717c2d3..c357e0bab 100644 --- a/src/main/java/org/stellar/sdk/responses/GsonSingleton.java +++ b/src/main/java/org/stellar/sdk/responses/GsonSingleton.java @@ -1,5 +1,6 @@ package org.stellar.sdk.responses; +import com.google.common.collect.ImmutableList; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; @@ -68,6 +69,7 @@ public static Gson getInstance() { .registerTypeAdapter( claimableBalancePageType.getType(), new PageDeserializer(claimableBalancePageType)) + .registerTypeAdapter(ImmutableList.class, new ImmutableListDeserializer()) .create(); } return instance; diff --git a/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetEventsResponse.java b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetEventsResponse.java new file mode 100644 index 000000000..890b94b65 --- /dev/null +++ b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetEventsResponse.java @@ -0,0 +1,48 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import com.google.common.collect.ImmutableList; +import lombok.AllArgsConstructor; +import lombok.Value; +import org.stellar.sdk.requests.sorobanrpc.EventFilterType; + +/** + * Response for JSON-RPC method getEvents. + * + * @see getEvents documentation + */ +@AllArgsConstructor +@Value +public class GetEventsResponse { + ImmutableList events; + + Long latestLedger; + + @AllArgsConstructor + @Value + public static class EventInfo { + EventFilterType type; + + Integer ledger; + + String ledgerClosedAt; + + String contractId; + + String id; + + String pagingToken; + + ImmutableList topic; + + EventInfoValue value; + + Boolean inSuccessfulContractCall; + } + + @AllArgsConstructor + @Value + public static class EventInfoValue { + String xdr; + } +} diff --git a/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetHealthResponse.java b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetHealthResponse.java new file mode 100644 index 000000000..ea59076ab --- /dev/null +++ b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetHealthResponse.java @@ -0,0 +1,16 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import lombok.AllArgsConstructor; +import lombok.Value; + +/** + * Response for JSON-RPC method getHealth. + * + * @see getHealth documentation + */ +@AllArgsConstructor +@Value +public class GetHealthResponse { + String status; +} diff --git a/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerResponse.java b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerResponse.java new file mode 100644 index 000000000..abca3d775 --- /dev/null +++ b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerResponse.java @@ -0,0 +1,20 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import lombok.AllArgsConstructor; +import lombok.Value; + +/** + * Response for JSON-RPC method getLatestLedger. + * + * @see getLatestLedger documentation + */ +@AllArgsConstructor +@Value +public class GetLatestLedgerResponse { + String id; + + Integer protocolVersion; + + Integer sequence; +} diff --git a/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLedgerEntriesResponse.java b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLedgerEntriesResponse.java new file mode 100644 index 000000000..96015fdd5 --- /dev/null +++ b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLedgerEntriesResponse.java @@ -0,0 +1,31 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import com.google.common.collect.ImmutableList; +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Value; + +/** + * Response for JSON-RPC method getLedgerEntries. + * + * @see getLedgerEntries documentation + */ +@AllArgsConstructor +@Value +public class GetLedgerEntriesResponse { + ImmutableList entries; + + Long latestLedger; + + @AllArgsConstructor + @Value + public static class LedgerEntryResult { + String key; + + String xdr; + + @SerializedName("lastModifiedLedgerSeq") + Long lastModifiedLedger; + } +} diff --git a/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetNetworkResponse.java b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetNetworkResponse.java new file mode 100644 index 000000000..a32cfb754 --- /dev/null +++ b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetNetworkResponse.java @@ -0,0 +1,20 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import lombok.AllArgsConstructor; +import lombok.Value; + +/** + * Response for JSON-RPC method getNetwork. + * + * @see getNetwork documentation + */ +@AllArgsConstructor +@Value +public class GetNetworkResponse { + String friendbotUrl; + + String passphrase; + + Integer protocolVersion; +} diff --git a/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetTransactionResponse.java b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetTransactionResponse.java new file mode 100644 index 000000000..6e099baf1 --- /dev/null +++ b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetTransactionResponse.java @@ -0,0 +1,44 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import lombok.AllArgsConstructor; +import lombok.Value; + +/** + * Response for JSON-RPC method getTransaction. + * + * @see getTransaction documentation + */ +@AllArgsConstructor +@Value +public class GetTransactionResponse { + GetTransactionStatus status; + + Long latestLedger; + + Long latestLedgerCloseTime; + + Long oldestLedger; + + Long oldestLedgerCloseTime; + + Integer applicationOrder; + + Boolean feeBump; + + String envelopeXdr; + + String resultXdr; + + String resultMetaXdr; + + Long ledger; + + Long createdAt; + + public enum GetTransactionStatus { + NOT_FOUND, + SUCCESS, + FAILED + } +} diff --git a/src/main/java/org/stellar/sdk/responses/sorobanrpc/SendTransactionResponse.java b/src/main/java/org/stellar/sdk/responses/sorobanrpc/SendTransactionResponse.java new file mode 100644 index 000000000..99ffeeb86 --- /dev/null +++ b/src/main/java/org/stellar/sdk/responses/sorobanrpc/SendTransactionResponse.java @@ -0,0 +1,31 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import lombok.AllArgsConstructor; +import lombok.Value; + +/** + * Response for JSON-RPC method sendTransaction. + * + * @see sendTransaction documentation + */ +@AllArgsConstructor +@Value +public class SendTransactionResponse { + SendTransactionStatus status; + + String errorResultXdr; + + String hash; + + Long latestLedger; + + Long latestLedgerCloseTime; + + public enum SendTransactionStatus { + PENDING, + DUPLICATE, + TRY_AGAIN_LATER, + ERROR + } +} diff --git a/src/main/java/org/stellar/sdk/responses/sorobanrpc/SimulateTransactionResponse.java b/src/main/java/org/stellar/sdk/responses/sorobanrpc/SimulateTransactionResponse.java new file mode 100644 index 000000000..0fb1b80f8 --- /dev/null +++ b/src/main/java/org/stellar/sdk/responses/sorobanrpc/SimulateTransactionResponse.java @@ -0,0 +1,49 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import com.google.common.collect.ImmutableList; +import com.google.gson.annotations.SerializedName; +import java.math.BigInteger; +import lombok.AllArgsConstructor; +import lombok.Value; + +/** + * Response for JSON-RPC method simulateTransaction. + * + * @see simulateTransaction documentation + */ +@AllArgsConstructor +@Value +public class SimulateTransactionResponse { + String error; + + String transactionData; + + ImmutableList events; + + Long minResourceFee; + + ImmutableList results; + + SimulateTransactionCost cost; + + Long latestLedger; + + @AllArgsConstructor + @Value + public static class SimulateHostFunctionResult { + ImmutableList auth; + + String xdr; + } + + @AllArgsConstructor + @Value + public static class SimulateTransactionCost { + @SerializedName("cpuInsns") + BigInteger cpuInstructions; + + @SerializedName("memBytes") + BigInteger memoryBytes; + } +} diff --git a/src/main/java/org/stellar/sdk/responses/sorobanrpc/SorobanRpcResponse.java b/src/main/java/org/stellar/sdk/responses/sorobanrpc/SorobanRpcResponse.java new file mode 100644 index 000000000..f0f46bb09 --- /dev/null +++ b/src/main/java/org/stellar/sdk/responses/sorobanrpc/SorobanRpcResponse.java @@ -0,0 +1,36 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Value; +import org.stellar.sdk.responses.Response; + +/** + * Represent the response returned by Soroban-RPC. + * + * @see JSON-RPC 2.0 + * Specification - Response object + */ +@AllArgsConstructor +@Getter +public class SorobanRpcResponse extends Response { + @SerializedName("jsonrpc") + private final String jsonRpc; + + private final String id; + + private final T result; + + private final Error error; + + @AllArgsConstructor + @Value + public static class Error { + Integer code; + + String message; + + String data; + } +} diff --git a/src/test/java/org/stellar/sdk/SorobanServerTest.java b/src/test/java/org/stellar/sdk/SorobanServerTest.java new file mode 100644 index 000000000..cd576f103 --- /dev/null +++ b/src/test/java/org/stellar/sdk/SorobanServerTest.java @@ -0,0 +1,1420 @@ +package org.stellar.sdk; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.stellar.sdk.xdr.SCValType.SCV_LEDGER_KEY_CONTRACT_INSTANCE; + +import com.google.common.io.BaseEncoding; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Optional; +import okhttp3.HttpUrl; +import okhttp3.mockwebserver.Dispatcher; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import okhttp3.mockwebserver.RecordedRequest; +import org.jetbrains.annotations.NotNull; +import org.junit.Test; +import org.stellar.sdk.requests.sorobanrpc.EventFilterType; +import org.stellar.sdk.requests.sorobanrpc.GetEventsRequest; +import org.stellar.sdk.requests.sorobanrpc.GetLedgerEntriesRequest; +import org.stellar.sdk.requests.sorobanrpc.GetTransactionRequest; +import org.stellar.sdk.requests.sorobanrpc.SendTransactionRequest; +import org.stellar.sdk.requests.sorobanrpc.SimulateTransactionRequest; +import org.stellar.sdk.requests.sorobanrpc.SorobanRpcErrorResponse; +import org.stellar.sdk.requests.sorobanrpc.SorobanRpcRequest; +import org.stellar.sdk.responses.sorobanrpc.GetEventsResponse; +import org.stellar.sdk.responses.sorobanrpc.GetHealthResponse; +import org.stellar.sdk.responses.sorobanrpc.GetLatestLedgerResponse; +import org.stellar.sdk.responses.sorobanrpc.GetLedgerEntriesResponse; +import org.stellar.sdk.responses.sorobanrpc.GetNetworkResponse; +import org.stellar.sdk.responses.sorobanrpc.SendTransactionResponse; +import org.stellar.sdk.responses.sorobanrpc.SimulateTransactionResponse; +import org.stellar.sdk.xdr.ContractDataDurability; +import org.stellar.sdk.xdr.ContractEntryBodyType; +import org.stellar.sdk.xdr.ContractExecutable; +import org.stellar.sdk.xdr.ContractExecutableType; +import org.stellar.sdk.xdr.ContractIDPreimage; +import org.stellar.sdk.xdr.ContractIDPreimageType; +import org.stellar.sdk.xdr.CreateContractArgs; +import org.stellar.sdk.xdr.ExtensionPoint; +import org.stellar.sdk.xdr.HostFunction; +import org.stellar.sdk.xdr.HostFunctionType; +import org.stellar.sdk.xdr.Int64; +import org.stellar.sdk.xdr.LedgerEntryType; +import org.stellar.sdk.xdr.LedgerFootprint; +import org.stellar.sdk.xdr.LedgerKey; +import org.stellar.sdk.xdr.SCSymbol; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.SCVec; +import org.stellar.sdk.xdr.SorobanAuthorizationEntry; +import org.stellar.sdk.xdr.SorobanAuthorizedFunction; +import org.stellar.sdk.xdr.SorobanAuthorizedFunctionType; +import org.stellar.sdk.xdr.SorobanAuthorizedInvocation; +import org.stellar.sdk.xdr.SorobanCredentials; +import org.stellar.sdk.xdr.SorobanCredentialsType; +import org.stellar.sdk.xdr.SorobanResources; +import org.stellar.sdk.xdr.SorobanTransactionData; +import org.stellar.sdk.xdr.Uint256; +import org.stellar.sdk.xdr.Uint32; +import org.stellar.sdk.xdr.XdrDataInputStream; +import org.stellar.sdk.xdr.XdrDataOutputStream; +import org.stellar.sdk.xdr.XdrString; + +public class SorobanServerTest { + private final Gson gson = new Gson(); + + @Test + public void testGetAccount() + throws IOException, SorobanRpcErrorResponse, AccountNotFoundException { + String accountId = "GDAT5HWTGIU4TSSZ4752OUC4SABDLTLZFRPZUJ3D6LKBNEPA7V2CIG54"; + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"ecb18f82ec12484190673502d0486b98\",\n" + + " \"result\": {\n" + + " \"entries\": [\n" + + " {\n" + + " \"key\": \"AAAAAAAAAADBPp7TMinJylnn+6dQXJACNc15LF+aJ2Py1BaR4P10JA==\",\n" + + " \"xdr\": \"AAAAAAAAAADBPp7TMinJylnn+6dQXJACNc15LF+aJ2Py1BaR4P10JAAAABdIcDhpAAADHAAAAAwAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAABfI8AAAAAZMK3qQ==\",\n" + + " \"lastModifiedLedgerSeq\": \"97423\"\n" + + " }\n" + + " ],\n" + + " \"latestLedger\": \"108023\"\n" + + " }\n" + + "}"; + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + GetLedgerEntriesRequest expectedRequest = + new GetLedgerEntriesRequest( + Collections.singletonList( + "AAAAAAAAAADBPp7TMinJylnn+6dQXJACNc15LF+aJ2Py1BaR4P10JA==")); + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("getLedgerEntries") + && sorobanRpcRequest.getParams().equals(expectedRequest)) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + TransactionBuilderAccount resp = server.getAccount(accountId); + assertEquals(resp.getAccountId(), accountId); + assertEquals(resp.getSequenceNumber().longValue(), 3418793967628L); + server.close(); + mockWebServer.close(); + } + + @Test(expected = AccountNotFoundException.class) + public void testGetAccountNotFoundThrows() + throws IOException, SorobanRpcErrorResponse, AccountNotFoundException { + String accountId = "GBG6OSICP2YJ5ROY4HBGNSVRQDCQ4RYPFFUH6I6BI7LHYNW2CM7AJVBE"; + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"0376b51e6a744dd2abb3b83be4c2e6dd\",\n" + + " \"result\": {\n" + + " \"entries\": null,\n" + + " \"latestLedger\": \"109048\"\n" + + " }\n" + + "}"; + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("getLedgerEntries")) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + server.getAccount(accountId); + server.close(); + mockWebServer.close(); + } + + @Test + public void testGetHealth() throws IOException, SorobanRpcErrorResponse { + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"198cb1a8-9104-4446-a269-88bf000c2721\",\n" + + " \"result\": {\n" + + " \"status\": \"healthy\"\n" + + " }\n" + + "}"; + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("getHealth")) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + GetHealthResponse resp = server.getHealth(); + assertEquals(resp.getStatus(), "healthy"); + server.close(); + mockWebServer.close(); + } + + @Test + public void testGetContractData() throws IOException, SorobanRpcErrorResponse { + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"839c6c921d40456db5ba8a1c4e1a0e70\",\n" + + " \"result\": {\n" + + " \"entries\": [\n" + + " {\n" + + " \"key\": \"AAAABgAAAAFgdoLyR3pr6M3w/fMr4T1fJaaGzAlP2T1ao9e2gjLQwAAAABQAAAABAAAAAA==\",\n" + + " \"xdr\": \"AAAABgAAAAFgdoLyR3pr6M3w/fMr4T1fJaaGzAlP2T1ao9e2gjLQwAAAABQAAAABAAAAAAAAAAAAAAATAAAAALnBupvoT7RHZ+oTeaPHSiSufpac3O3mc0u663Kqbko/AAAAAQAAAAEAAAAPAAAAB0NPVU5URVIAAAAAAwAAAAEAABD1\",\n" + + " \"lastModifiedLedgerSeq\": \"290\"\n" + + " }\n" + + " ],\n" + + " \"latestLedger\": \"296\"\n" + + " }\n" + + "}"; + + String contractId = "CBQHNAXSI55GX2GN6D67GK7BHVPSLJUGZQEU7WJ5LKR5PNUCGLIMAO4K"; + SCVal key = new SCVal.Builder().discriminant(SCV_LEDGER_KEY_CONTRACT_INSTANCE).build(); + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + + Address address = new Address(contractId); + LedgerKey.LedgerKeyContractData ledgerKeyContractData = + new LedgerKey.LedgerKeyContractData.Builder() + .contract(address.toSCAddress()) + .key(key) + .durability(ContractDataDurability.PERSISTENT) + .bodyType(ContractEntryBodyType.DATA_ENTRY) + .build(); + LedgerKey ledgerKey = + new LedgerKey.Builder() + .discriminant(LedgerEntryType.CONTRACT_DATA) + .contractData(ledgerKeyContractData) + .build(); + + GetLedgerEntriesRequest expectedRequest = + new GetLedgerEntriesRequest( + Collections.singletonList(ledgerKeyToXdrBase64(ledgerKey))); + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("getLedgerEntries") + && sorobanRpcRequest.getParams().equals(expectedRequest)) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + Optional resp = + server.getContractData(contractId, key, SorobanServer.Durability.PERSISTENT); + assertTrue(resp.isPresent()); + assertEquals(resp.get().getLastModifiedLedger().longValue(), 290L); + assertEquals( + resp.get().getKey(), + "AAAABgAAAAFgdoLyR3pr6M3w/fMr4T1fJaaGzAlP2T1ao9e2gjLQwAAAABQAAAABAAAAAA=="); + assertEquals( + resp.get().getXdr(), + "AAAABgAAAAFgdoLyR3pr6M3w/fMr4T1fJaaGzAlP2T1ao9e2gjLQwAAAABQAAAABAAAAAAAAAAAAAAATAAAAALnBupvoT7RHZ+oTeaPHSiSufpac3O3mc0u663Kqbko/AAAAAQAAAAEAAAAPAAAAB0NPVU5URVIAAAAAAwAAAAEAABD1"); + server.close(); + mockWebServer.close(); + } + + @Test + public void testGetContractDataReturnNull() throws IOException, SorobanRpcErrorResponse { + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"7d61ef6b1f974ba886b323f4266b4211\",\n" + + " \"result\": {\n" + + " \"entries\": null,\n" + + " \"latestLedger\": \"191\"\n" + + " }\n" + + "}"; + String contractId = "CBQHNAXSI55GX2GN6D67GK7BHVPSLJUGZQEU7WJ5LKR5PNUCGLIMAO4K"; + SCVal key = new SCVal.Builder().discriminant(SCV_LEDGER_KEY_CONTRACT_INSTANCE).build(); + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + + Address address = new Address(contractId); + LedgerKey.LedgerKeyContractData ledgerKeyContractData = + new LedgerKey.LedgerKeyContractData.Builder() + .contract(address.toSCAddress()) + .key(key) + .durability(ContractDataDurability.PERSISTENT) + .bodyType(ContractEntryBodyType.DATA_ENTRY) + .build(); + LedgerKey ledgerKey = + new LedgerKey.Builder() + .discriminant(LedgerEntryType.CONTRACT_DATA) + .contractData(ledgerKeyContractData) + .build(); + + GetLedgerEntriesRequest expectedRequest = + new GetLedgerEntriesRequest( + Collections.singletonList(ledgerKeyToXdrBase64(ledgerKey))); + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("getLedgerEntries") + && sorobanRpcRequest.getParams().equals(expectedRequest)) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + Optional resp = + server.getContractData(contractId, key, SorobanServer.Durability.PERSISTENT); + assertFalse(resp.isPresent()); + server.close(); + mockWebServer.close(); + } + + @Test + public void testGetLedgerEntries() throws IOException, SorobanRpcErrorResponse { + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"0ce70038b1804b3c93ca7abc137f3061\",\n" + + " \"result\": {\n" + + " \"entries\": [\n" + + " {\n" + + " \"key\": \"AAAAAAAAAACynni6I2ACEzWuORVM1b2y0k1ZDni0W6JlC/Ad/mfCSg==\",\n" + + " \"xdr\": \"AAAAAAAAAACynni6I2ACEzWuORVM1b2y0k1ZDni0W6JlC/Ad/mfCSgAAABdIdugAAAAAnwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA\",\n" + + " \"lastModifiedLedgerSeq\": \"159\"\n" + + " },\n" + + " {\n" + + " \"key\": \"AAAAAAAAAADBPp7TMinJylnn+6dQXJACNc15LF+aJ2Py1BaR4P10JA==\",\n" + + " \"xdr\": \"AAAAAAAAAADBPp7TMinJylnn+6dQXJACNc15LF+aJ2Py1BaR4P10JAAAABdIcmH6AAAAoQAAAAgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAHAkAAAAAZMPQ0g==\",\n" + + " \"lastModifiedLedgerSeq\": \"7177\"\n" + + " }\n" + + " ],\n" + + " \"latestLedger\": \"7943\"\n" + + " }\n" + + "}"; + + String accountId0 = "GCZJ46F2ENQAEEZVVY4RKTGVXWZNETKZBZ4LIW5CMUF7AHP6M7BEV464"; + LedgerKey.LedgerKeyAccount ledgerKeyAccount0 = + new LedgerKey.LedgerKeyAccount.Builder() + .accountID(KeyPair.fromAccountId(accountId0).getXdrAccountId()) + .build(); + LedgerKey ledgerKey0 = + new LedgerKey.Builder() + .account(ledgerKeyAccount0) + .discriminant(LedgerEntryType.ACCOUNT) + .build(); + String ledgerKey0Xdr = ledgerKeyToXdrBase64(ledgerKey0); + + String accountId1 = "GDAT5HWTGIU4TSSZ4752OUC4SABDLTLZFRPZUJ3D6LKBNEPA7V2CIG54"; + LedgerKey.LedgerKeyAccount ledgerKeyAccount1 = + new LedgerKey.LedgerKeyAccount.Builder() + .accountID(KeyPair.fromAccountId(accountId1).getXdrAccountId()) + .build(); + LedgerKey ledgerKey1 = + new LedgerKey.Builder() + .account(ledgerKeyAccount1) + .discriminant(LedgerEntryType.ACCOUNT) + .build(); + String ledgerKey1Xdr = ledgerKeyToXdrBase64(ledgerKey1); + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + + // add ledgerKey0Xdr and ledgerKey1Xdr + GetLedgerEntriesRequest expectedRequest = + new GetLedgerEntriesRequest(Arrays.asList(ledgerKey0Xdr, ledgerKey1Xdr)); + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("getLedgerEntries") + && sorobanRpcRequest.getParams().equals(expectedRequest)) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + GetLedgerEntriesResponse resp = server.getLedgerEntries(Arrays.asList(ledgerKey0, ledgerKey1)); + assertEquals(resp.getLatestLedger().longValue(), 7943L); + assertEquals(resp.getEntries().size(), 2); + assertEquals( + resp.getEntries().asList().get(0).getKey(), + "AAAAAAAAAACynni6I2ACEzWuORVM1b2y0k1ZDni0W6JlC/Ad/mfCSg=="); + assertEquals( + resp.getEntries().asList().get(0).getXdr(), + "AAAAAAAAAACynni6I2ACEzWuORVM1b2y0k1ZDni0W6JlC/Ad/mfCSgAAABdIdugAAAAAnwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA"); + assertEquals( + resp.getEntries().asList().get(1).getKey(), + "AAAAAAAAAADBPp7TMinJylnn+6dQXJACNc15LF+aJ2Py1BaR4P10JA=="); + assertEquals( + resp.getEntries().asList().get(1).getXdr(), + "AAAAAAAAAADBPp7TMinJylnn+6dQXJACNc15LF+aJ2Py1BaR4P10JAAAABdIcmH6AAAAoQAAAAgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAHAkAAAAAZMPQ0g=="); + server.close(); + mockWebServer.close(); + } + + @Test + public void testGetTransaction() throws IOException, SorobanRpcErrorResponse { + String hash = "06dd9ee70bf93bbfe219e2b31363ab5a0361cc6285328592e4d3d1fed4c9025c"; + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"198cb1a8-9104-4446-a269-88bf000c2721\",\n" + + " \"result\": {\n" + + " \"status\": \"SUCCESS\",\n" + + " \"latestLedger\": \"79289\",\n" + + " \"latestLedgerCloseTime\": \"1690387240\",\n" + + " \"oldestLedger\": \"77850\",\n" + + " \"oldestLedgerCloseTime\": \"1690379694\",\n" + + " \"applicationOrder\": 1,\n" + + " \"envelopeXdr\": \"AAAAAgAAAADTYKIzfa0ubKp7qjOcF+ZO8sjQutzo1iHuDh8esi9q+wABNjQAATW1AAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAAAAAAIAAAASAAAAAb3H+V1yFoNDBpje4rchxeaR7/hRNS2CAT2Dh6A8z6xrAAAADwAAAARuYW1lAAAAAAAAAAEAAAAAAAAAAwAAAAYAAAABvcf5XXIWg0MGmN7ityHF5pHv+FE1LYIBPYOHoDzPrGsAAAAPAAAACE1FVEFEQVRBAAAAAQAAAAAAAAAGAAAAAb3H+V1yFoNDBpje4rchxeaR7/hRNS2CAT2Dh6A8z6xrAAAAFAAAAAEAAAAAAAAAB++FkDTZODW0rvolF6AuIZf4w7+GQd8RofaH8u2pM+UPAAAAAAAAAAAAUrutAAAiqAAAAAAAAADIAAAAAAAAACgAAAABsi9q+wAAAEDgHR/5rU+bsXD/oPUFodyEgXFNbDm5T2+M1GarZXy+d+tZ757PBL9ysK41F1hUYz3p5CA7Urlpe3fnNjYcu1EM\",\n" + + " \"resultXdr\": \"AAAAAAABNCwAAAAAAAAAAQAAAAAAAAAYAAAAAJhEDjNV0Jj46jrxCj87qJ6JaYKJN4c+p5tvapkLwrn8AAAAAA==\",\n" + + " \"resultMetaXdr\": \"AAAAAwAAAAAAAAACAAAAAwABNbYAAAAAAAAAANNgojN9rS5sqnuqM5wX5k7yyNC63OjWIe4OHx6yL2r7AAAAF0h1s9QAATW1AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQABNbYAAAAAAAAAANNgojN9rS5sqnuqM5wX5k7yyNC63OjWIe4OHx6yL2r7AAAAF0h1s9QAATW1AAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAAAE1tgAAAABkwUMZAAAAAAAAAAEAAAAAAAAAAgAAAAMAATW2AAAAAAAAAADTYKIzfa0ubKp7qjOcF+ZO8sjQutzo1iHuDh8esi9q+wAAABdIdbPUAAE1tQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAABNbYAAAAAZMFDGQAAAAAAAAABAAE1tgAAAAAAAAAA02CiM32tLmyqe6oznBfmTvLI0Lrc6NYh7g4fHrIvavsAAAAXSHWz/AABNbUAAAABAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAwAAAAAAATW2AAAAAGTBQxkAAAAAAAAAAQAAAAAAAAAAAAAADgAAAAZUb2tlbkEAAAAAAAIAAAABAAAAAAAAAAAAAAACAAAAAAAAAAMAAAAPAAAAB2ZuX2NhbGwAAAAADQAAACC9x/ldchaDQwaY3uK3IcXmke/4UTUtggE9g4egPM+sawAAAA8AAAAEbmFtZQAAAAEAAAABAAAAAAAAAAG9x/ldchaDQwaY3uK3IcXmke/4UTUtggE9g4egPM+sawAAAAIAAAAAAAAAAgAAAA8AAAAJZm5fcmV0dXJuAAAAAAAADwAAAARuYW1lAAAADgAAAAZUb2tlbkEAAA==\",\n" + + " \"ledger\": \"79286\",\n" + + " \"createdAt\": \"1690387225\"\n" + + " }\n" + + "}"; + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + GetTransactionRequest expectedRequest = new GetTransactionRequest(hash); + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("getTransaction") + && sorobanRpcRequest.getParams().equals(expectedRequest)) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + server.getTransaction(hash); + + server.close(); + mockWebServer.close(); + } + + @Test + public void testGetEvents() throws IOException, SorobanRpcErrorResponse { + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"198cb1a8-9104-4446-a269-88bf000c2721\",\n" + + " \"result\": {\n" + + " \"events\": [\n" + + " {\n" + + " \"type\": \"contract\",\n" + + " \"ledger\": \"107\",\n" + + " \"ledgerClosedAt\": \"2023-07-28T14:57:02Z\",\n" + + " \"contractId\": \"607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0\",\n" + + " \"id\": \"0000000459561504768-0000000000\",\n" + + " \"pagingToken\": \"0000000459561504768-0000000000\",\n" + + " \"topic\": [\n" + + " \"AAAADwAAAAdDT1VOVEVSAA==\",\n" + + " \"AAAADwAAAAlpbmNyZW1lbnQAAAA=\"\n" + + " ],\n" + + " \"value\": {\n" + + " \"xdr\": \"AAAAAwAAAAQ=\"\n" + + " },\n" + + " \"inSuccessfulContractCall\": true\n" + + " },\n" + + " {\n" + + " \"type\": \"contract\",\n" + + " \"ledger\": \"109\",\n" + + " \"ledgerClosedAt\": \"2023-07-28T14:57:04Z\",\n" + + " \"contractId\": \"607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0\",\n" + + " \"id\": \"0000000468151439360-0000000000\",\n" + + " \"pagingToken\": \"0000000468151439360-0000000000\",\n" + + " \"topic\": [\n" + + " \"AAAADwAAAAdDT1VOVEVSAA==\",\n" + + " \"AAAADwAAAAlpbmNyZW1lbnQAAAA=\"\n" + + " ],\n" + + " \"value\": {\n" + + " \"xdr\": \"AAAAAwAAAAU=\"\n" + + " },\n" + + " \"inSuccessfulContractCall\": true\n" + + " }\n" + + " ],\n" + + " \"latestLedger\": \"187\"\n" + + " }\n" + + "}"; + + GetEventsRequest.EventFilter eventFilter = + GetEventsRequest.EventFilter.builder() + .contractIds( + Collections.singletonList( + "607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0")) + .type(EventFilterType.CONTRACT) + .topic(Arrays.asList("AAAADwAAAAdDT1VOVEVSAA==", "AAAADwAAAAlpbmNyZW1lbnQAAAA=")) + .build(); + GetEventsRequest.PaginationOptions paginationOptions = + GetEventsRequest.PaginationOptions.builder() + .limit(10L) + .cursor("0000007799660613632-0000000000") + .build(); + GetEventsRequest getEventsRequest = + GetEventsRequest.builder() + .startLedger("100") + .filter(eventFilter) + .pagination(paginationOptions) + .build(); + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("getEvents") + && sorobanRpcRequest.getParams().equals(getEventsRequest)) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + GetEventsResponse resp = server.getEvents(getEventsRequest); + assertEquals(resp.getLatestLedger().longValue(), 187L); + assertEquals(resp.getEvents().size(), 2); + assertEquals(resp.getEvents().get(0).getType(), EventFilterType.CONTRACT); + assertEquals(resp.getEvents().get(0).getLedger().longValue(), 107L); + assertEquals(resp.getEvents().get(0).getLedgerClosedAt(), "2023-07-28T14:57:02Z"); + assertEquals( + resp.getEvents().get(0).getContractId(), + "607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0"); + assertEquals(resp.getEvents().get(0).getId(), "0000000459561504768-0000000000"); + assertEquals(resp.getEvents().get(0).getPagingToken(), "0000000459561504768-0000000000"); + assertEquals(resp.getEvents().get(0).getTopic().size(), 2); + assertEquals(resp.getEvents().get(0).getTopic().get(0), "AAAADwAAAAdDT1VOVEVSAA=="); + assertEquals(resp.getEvents().get(0).getTopic().get(1), "AAAADwAAAAlpbmNyZW1lbnQAAAA="); + assertEquals(resp.getEvents().get(0).getValue().getXdr(), "AAAAAwAAAAQ="); + assertEquals(resp.getEvents().get(0).getInSuccessfulContractCall(), true); + + server.close(); + mockWebServer.close(); + } + + @Test + public void testGetNetwork() throws IOException, SorobanRpcErrorResponse { + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"198cb1a8-9104-4446-a269-88bf000c2721\",\n" + + " \"result\": {\n" + + " \"friendbotUrl\": \"http://localhost:8000/friendbot\",\n" + + " \"passphrase\": \"Standalone Network ; February 2017\",\n" + + " \"protocolVersion\": \"20\"\n" + + " }\n" + + "}"; + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("getNetwork")) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + GetNetworkResponse resp = server.getNetwork(); + assertEquals(resp.getFriendbotUrl(), "http://localhost:8000/friendbot"); + assertEquals(resp.getPassphrase(), "Standalone Network ; February 2017"); + assertEquals(resp.getProtocolVersion().longValue(), 20L); + server.close(); + mockWebServer.close(); + } + + @Test + public void testGetLatestLedger() throws IOException, SorobanRpcErrorResponse { + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"198cb1a8-9104-4446-a269-88bf000c2721\",\n" + + " \"result\": {\n" + + " \"id\": \"e73d7654b72daa637f396669182c6072549736a9e3b6fcb8e685adb61f8c910a\",\n" + + " \"protocolVersion\": \"20\",\n" + + " \"sequence\": 24170\n" + + " }\n" + + "}"; + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("getLatestLedger")) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + 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); + + server.close(); + mockWebServer.close(); + } + + @Test + public void testSimulateTransaction() throws IOException, SorobanRpcErrorResponse { + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"e1fabdcdf0244a2a9adfab94d7748b6c\",\n" + + " \"result\": {\n" + + " \"transactionData\": \"AAAAAAAAAAIAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAFAAAAAEAAAAAAAAAB300Hyg0HZG+Qie3zvsxLvugrNtFqd3AIntWy9bg2YvZAAAAAAAAAAEAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAEAAAAAEAAAACAAAADwAAAAdDb3VudGVyAAAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAQAAAAAAFcLDAAAF8AAAAQgAAAMcAAAAAAAAAJw=\",\n" + + " \"events\": [\n" + + " \"AAAAAQAAAAAAAAAAAAAAAgAAAAAAAAADAAAADwAAAAdmbl9jYWxsAAAAAA0AAAAgxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAPAAAACWluY3JlbWVudAAAAAAAABAAAAABAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAo=\",\n" + + " \"AAAAAQAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAACAAAAAAAAAAIAAAAPAAAACWZuX3JldHVybgAAAAAAAA8AAAAJaW5jcmVtZW50AAAAAAAAAwAAABQ=\"\n" + + " ],\n" + + " \"minResourceFee\": \"58595\",\n" + + " \"results\": [\n" + + " {\n" + + " \"auth\": [\n" + + " \"AAAAAAAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAoAAAAA\"\n" + + " ],\n" + + " \"xdr\": \"AAAAAwAAABQ=\"\n" + + " }\n" + + " ],\n" + + " \"cost\": {\n" + + " \"cpuInsns\": \"1240100\",\n" + + " \"memBytes\": \"161637\"\n" + + " },\n" + + " \"latestLedger\": \"1479\"\n" + + " }\n" + + "}"; + + Transaction transaction = buildSorobanTransaction(null, null); + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("simulateTransaction") + && sorobanRpcRequest + .getParams() + .getTransaction() + .equals(transaction.toEnvelopeXdrBase64())) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + SimulateTransactionResponse resp = server.simulateTransaction(transaction); + assertEquals(resp.getLatestLedger().longValue(), 1479L); + assertEquals( + resp.getTransactionData(), + "AAAAAAAAAAIAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAFAAAAAEAAAAAAAAAB300Hyg0HZG+Qie3zvsxLvugrNtFqd3AIntWy9bg2YvZAAAAAAAAAAEAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAEAAAAAEAAAACAAAADwAAAAdDb3VudGVyAAAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAQAAAAAAFcLDAAAF8AAAAQgAAAMcAAAAAAAAAJw="); + assertEquals(resp.getEvents().size(), 2); + assertEquals( + resp.getEvents().get(0), + "AAAAAQAAAAAAAAAAAAAAAgAAAAAAAAADAAAADwAAAAdmbl9jYWxsAAAAAA0AAAAgxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAPAAAACWluY3JlbWVudAAAAAAAABAAAAABAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAo="); + assertEquals( + resp.getEvents().get(1), + "AAAAAQAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAACAAAAAAAAAAIAAAAPAAAACWZuX3JldHVybgAAAAAAAA8AAAAJaW5jcmVtZW50AAAAAAAAAwAAABQ="); + assertEquals(resp.getMinResourceFee().longValue(), 58595L); + assertEquals(resp.getResults().size(), 1); + assertEquals(resp.getResults().get(0).getAuth().size(), 1); + assertEquals( + resp.getResults().get(0).getAuth().get(0), + "AAAAAAAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAoAAAAA"); + assertEquals(resp.getResults().get(0).getXdr(), "AAAAAwAAABQ="); + assertEquals(resp.getCost().getCpuInstructions().longValue(), 1240100L); + assertEquals(resp.getCost().getMemoryBytes().longValue(), 161637L); + server.close(); + mockWebServer.close(); + } + + @Test + public void testPrepareTransaction() + throws IOException, SorobanRpcErrorResponse, PrepareTransactionException { + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"e1fabdcdf0244a2a9adfab94d7748b6c\",\n" + + " \"result\": {\n" + + " \"transactionData\": \"AAAAAAAAAAIAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAFAAAAAEAAAAAAAAAB300Hyg0HZG+Qie3zvsxLvugrNtFqd3AIntWy9bg2YvZAAAAAAAAAAEAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAEAAAAAEAAAACAAAADwAAAAdDb3VudGVyAAAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAQAAAAAAFcLDAAAF8AAAAQgAAAMcAAAAAAAAAJw=\",\n" + + " \"events\": [\n" + + " \"AAAAAQAAAAAAAAAAAAAAAgAAAAAAAAADAAAADwAAAAdmbl9jYWxsAAAAAA0AAAAgxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAPAAAACWluY3JlbWVudAAAAAAAABAAAAABAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAo=\",\n" + + " \"AAAAAQAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAACAAAAAAAAAAIAAAAPAAAACWZuX3JldHVybgAAAAAAAA8AAAAJaW5jcmVtZW50AAAAAAAAAwAAABQ=\"\n" + + " ],\n" + + " \"minResourceFee\": \"58595\",\n" + + " \"results\": [\n" + + " {\n" + + " \"auth\": [\n" + + " \"AAAAAAAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAoAAAAA\"\n" + + " ],\n" + + " \"xdr\": \"AAAAAwAAABQ=\"\n" + + " }\n" + + " ],\n" + + " \"cost\": {\n" + + " \"cpuInsns\": \"1240100\",\n" + + " \"memBytes\": \"161637\"\n" + + " },\n" + + " \"latestLedger\": \"1479\"\n" + + " }\n" + + "}"; + + Transaction transaction = buildSorobanTransaction(null, null); + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("simulateTransaction") + && sorobanRpcRequest + .getParams() + .getTransaction() + .equals(transaction.toEnvelopeXdrBase64())) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + Transaction newTx = server.prepareTransaction(transaction); + + SorobanTransactionData sorobanData = + Util.sorobanTransactionDataToXDR( + "AAAAAAAAAAIAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAFAAAAAEAAAAAAAAAB300Hyg0HZG+Qie3zvsxLvugrNtFqd3AIntWy9bg2YvZAAAAAAAAAAEAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAEAAAAAEAAAACAAAADwAAAAdDb3VudGVyAAAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAQAAAAAAFcLDAAAF8AAAAQgAAAMcAAAAAAAAAJw="); + InvokeHostFunctionOperation operation = + InvokeHostFunctionOperation.builder() + .hostFunction( + ((InvokeHostFunctionOperation) transaction.getOperations()[0]).getHostFunction()) + .sourceAccount(transaction.getOperations()[0].getSourceAccount()) + .auth( + Collections.singletonList( + sorobanAuthorizationEntryFromXdrBase64( + "AAAAAAAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAoAAAAA"))) + .build(); + Transaction expectedTx = + new Transaction( + transaction.getAccountConverter(), + transaction.getSourceAccount(), + transaction.getFee() + 58595L, + transaction.getSequenceNumber(), + new Operation[] {operation}, + transaction.getMemo(), + transaction.getPreconditions(), + sorobanData, + transaction.getNetwork()); + assertEquals(expectedTx, newTx); + + server.close(); + mockWebServer.close(); + } + + @Test + public void testPrepareTransactionWithSorobanData() + throws IOException, SorobanRpcErrorResponse, PrepareTransactionException { + // soroban data will be overwritten + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"e1fabdcdf0244a2a9adfab94d7748b6c\",\n" + + " \"result\": {\n" + + " \"transactionData\": \"AAAAAAAAAAIAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAFAAAAAEAAAAAAAAAB300Hyg0HZG+Qie3zvsxLvugrNtFqd3AIntWy9bg2YvZAAAAAAAAAAEAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAEAAAAAEAAAACAAAADwAAAAdDb3VudGVyAAAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAQAAAAAAFcLDAAAF8AAAAQgAAAMcAAAAAAAAAJw=\",\n" + + " \"events\": [\n" + + " \"AAAAAQAAAAAAAAAAAAAAAgAAAAAAAAADAAAADwAAAAdmbl9jYWxsAAAAAA0AAAAgxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAPAAAACWluY3JlbWVudAAAAAAAABAAAAABAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAo=\",\n" + + " \"AAAAAQAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAACAAAAAAAAAAIAAAAPAAAACWZuX3JldHVybgAAAAAAAA8AAAAJaW5jcmVtZW50AAAAAAAAAwAAABQ=\"\n" + + " ],\n" + + " \"minResourceFee\": \"58595\",\n" + + " \"results\": [\n" + + " {\n" + + " \"auth\": [\n" + + " \"AAAAAAAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAoAAAAA\"\n" + + " ],\n" + + " \"xdr\": \"AAAAAwAAABQ=\"\n" + + " }\n" + + " ],\n" + + " \"cost\": {\n" + + " \"cpuInsns\": \"1240100\",\n" + + " \"memBytes\": \"161637\"\n" + + " },\n" + + " \"latestLedger\": \"1479\"\n" + + " }\n" + + "}"; + LedgerKey ledgerKey = + new LedgerKey.Builder() + .discriminant(LedgerEntryType.ACCOUNT) + .account( + new LedgerKey.LedgerKeyAccount.Builder() + .accountID( + KeyPair.fromAccountId( + "GB7TAYRUZGE6TVT7NHP5SMIZRNQA6PLM423EYISAOAP3MKYIQMVYP2JO") + .getXdrAccountId()) + .build()) + .build(); + SorobanTransactionData originSorobanData = + new SorobanTransactionData.Builder() + .resources( + new SorobanResources.Builder() + .footprint( + new LedgerFootprint.Builder() + .readOnly(new LedgerKey[] {ledgerKey}) + .readWrite(new LedgerKey[] {}) + .build()) + .extendedMetaDataSizeBytes(new Uint32(216)) + .readBytes(new Uint32(699)) + .writeBytes(new Uint32(0)) + .instructions(new Uint32(34567)) + .build()) + .refundableFee(new Int64(100L)) + .ext(new ExtensionPoint.Builder().discriminant(0).build()) + .build(); + Transaction transaction = buildSorobanTransaction(originSorobanData, null); + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("simulateTransaction") + && sorobanRpcRequest + .getParams() + .getTransaction() + .equals(transaction.toEnvelopeXdrBase64())) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + Transaction newTx = server.prepareTransaction(transaction); + + SorobanTransactionData sorobanData = + Util.sorobanTransactionDataToXDR( + "AAAAAAAAAAIAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAFAAAAAEAAAAAAAAAB300Hyg0HZG+Qie3zvsxLvugrNtFqd3AIntWy9bg2YvZAAAAAAAAAAEAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAEAAAAAEAAAACAAAADwAAAAdDb3VudGVyAAAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAQAAAAAAFcLDAAAF8AAAAQgAAAMcAAAAAAAAAJw="); + InvokeHostFunctionOperation operation = + InvokeHostFunctionOperation.builder() + .hostFunction( + ((InvokeHostFunctionOperation) transaction.getOperations()[0]).getHostFunction()) + .sourceAccount(transaction.getOperations()[0].getSourceAccount()) + .auth( + Collections.singletonList( + sorobanAuthorizationEntryFromXdrBase64( + "AAAAAAAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAoAAAAA"))) + .build(); + Transaction expectedTx = + new Transaction( + transaction.getAccountConverter(), + transaction.getSourceAccount(), + transaction.getFee() + 58595L, + transaction.getSequenceNumber(), + new Operation[] {operation}, + transaction.getMemo(), + transaction.getPreconditions(), + sorobanData, + transaction.getNetwork()); + assertEquals(expectedTx, newTx); + + server.close(); + mockWebServer.close(); + } + + @Test + public void testPrepareTransactionWithAuth() + throws IOException, SorobanRpcErrorResponse, PrepareTransactionException { + // origin auth will not be overwritten + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"e1fabdcdf0244a2a9adfab94d7748b6c\",\n" + + " \"result\": {\n" + + " \"transactionData\": \"AAAAAAAAAAIAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAFAAAAAEAAAAAAAAAB300Hyg0HZG+Qie3zvsxLvugrNtFqd3AIntWy9bg2YvZAAAAAAAAAAEAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAEAAAAAEAAAACAAAADwAAAAdDb3VudGVyAAAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAQAAAAAAFcLDAAAF8AAAAQgAAAMcAAAAAAAAAJw=\",\n" + + " \"events\": [\n" + + " \"AAAAAQAAAAAAAAAAAAAAAgAAAAAAAAADAAAADwAAAAdmbl9jYWxsAAAAAA0AAAAgxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAPAAAACWluY3JlbWVudAAAAAAAABAAAAABAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAo=\",\n" + + " \"AAAAAQAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAACAAAAAAAAAAIAAAAPAAAACWZuX3JldHVybgAAAAAAAA8AAAAJaW5jcmVtZW50AAAAAAAAAwAAABQ=\"\n" + + " ],\n" + + " \"minResourceFee\": \"58595\",\n" + + " \"results\": [\n" + + " {\n" + + " \"auth\": [\n" + + " \"AAAAAAAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAoAAAAA\"\n" + + " ],\n" + + " \"xdr\": \"AAAAAwAAABQ=\"\n" + + " }\n" + + " ],\n" + + " \"cost\": {\n" + + " \"cpuInsns\": \"1240100\",\n" + + " \"memBytes\": \"161637\"\n" + + " },\n" + + " \"latestLedger\": \"1479\"\n" + + " }\n" + + "}"; + CreateContractArgs createContractArgs = + new CreateContractArgs.Builder() + .contractIDPreimage( + new ContractIDPreimage.Builder() + .discriminant(ContractIDPreimageType.CONTRACT_ID_PREIMAGE_FROM_ADDRESS) + .fromAddress( + new ContractIDPreimage.ContractIDPreimageFromAddress.Builder() + .address( + new Address( + "GB7TAYRUZGE6TVT7NHP5SMIZRNQA6PLM423EYISAOAP3MKYIQMVYP2JO") + .toSCAddress()) + .salt(new Uint256(new byte[32])) + .build()) + .build()) + .executable( + new ContractExecutable.Builder() + .discriminant(ContractExecutableType.CONTRACT_EXECUTABLE_TOKEN) + .build()) + .build(); + SorobanAuthorizationEntry auth = + new SorobanAuthorizationEntry.Builder() + .credentials( + new SorobanCredentials.Builder() + .discriminant(SorobanCredentialsType.SOROBAN_CREDENTIALS_SOURCE_ACCOUNT) + .build()) + .rootInvocation( + new SorobanAuthorizedInvocation.Builder() + .subInvocations(new SorobanAuthorizedInvocation[] {}) + .function( + new SorobanAuthorizedFunction.Builder() + .discriminant( + SorobanAuthorizedFunctionType + .SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN) + .createContractHostFn(createContractArgs) + .build()) + .build()) + .build(); + + Transaction transaction = buildSorobanTransaction(null, Collections.singletonList(auth)); + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("simulateTransaction") + && sorobanRpcRequest + .getParams() + .getTransaction() + .equals(transaction.toEnvelopeXdrBase64())) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + Transaction newTx = server.prepareTransaction(transaction); + + SorobanTransactionData sorobanData = + Util.sorobanTransactionDataToXDR( + "AAAAAAAAAAIAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAFAAAAAEAAAAAAAAAB300Hyg0HZG+Qie3zvsxLvugrNtFqd3AIntWy9bg2YvZAAAAAAAAAAEAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAEAAAAAEAAAACAAAADwAAAAdDb3VudGVyAAAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAQAAAAAAFcLDAAAF8AAAAQgAAAMcAAAAAAAAAJw="); + InvokeHostFunctionOperation operation = + InvokeHostFunctionOperation.builder() + .hostFunction( + ((InvokeHostFunctionOperation) transaction.getOperations()[0]).getHostFunction()) + .sourceAccount(transaction.getOperations()[0].getSourceAccount()) + .auth( + Arrays.asList( + auth, + sorobanAuthorizationEntryFromXdrBase64( + "AAAAAAAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAoAAAAA"))) + .build(); + Transaction expectedTx = + new Transaction( + transaction.getAccountConverter(), + transaction.getSourceAccount(), + transaction.getFee() + 58595L, + transaction.getSequenceNumber(), + new Operation[] {operation}, + transaction.getMemo(), + transaction.getPreconditions(), + sorobanData, + transaction.getNetwork()); + assertEquals(expectedTx, newTx); + + server.close(); + mockWebServer.close(); + } + + @Test(expected = PrepareTransactionException.class) + public void testPrepareTransactionWithPrepareTransactionExceptionThrowsErrorResponse() + throws IOException, SorobanRpcErrorResponse, PrepareTransactionException { + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"7b6ada2bdec04ee28147d1557aadc3cf\",\n" + + " \"result\": {\n" + + " \"error\": \"HostError: Error(WasmVm, MissingValue)\\n\\nEvent log (newest first):\\n 0: [Diagnostic Event] contract:607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0, topics:[error, Error(WasmVm, MissingValue)], data:[\\\"invoking unknown export\\\", increment]\\n 1: [Diagnostic Event] topics:[fn_call, Bytes(607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0), increment], data:[Address(Account(58b7c4a2c8f297aa8f3d2471281fdfccecafe48e5663313ec18e12a73eca98a1)), 10]\\n\\nBacktrace (newest first):\\n 0: soroban_env_host::vm::Vm::invoke_function_raw\\n 1: soroban_env_host::host::frame::::call_n_internal\\n 2: soroban_env_host::host::frame::::invoke_function\\n 3: preflight::preflight_invoke_hf_op::{{closure}}\\n 4: preflight::catch_preflight_panic\\n 5: _cgo_a3255893d7fd_Cfunc_preflight_invoke_hf_op\\n at /tmp/go-build/cgo-gcc-prolog:99:11\\n 6: runtime.asmcgocall\\n at ./runtime/asm_amd64.s:848\\n\\n\",\n" + + " \"transactionData\": \"\",\n" + + " \"events\": null,\n" + + " \"minResourceFee\": \"0\",\n" + + " \"cost\": {\n" + + " \"cpuInsns\": \"0\",\n" + + " \"memBytes\": \"0\"\n" + + " },\n" + + " \"latestLedger\": \"898\"\n" + + " }\n" + + "}"; + + Transaction transaction = buildSorobanTransaction(null, null); + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("simulateTransaction") + && sorobanRpcRequest + .getParams() + .getTransaction() + .equals(transaction.toEnvelopeXdrBase64())) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + server.prepareTransaction(transaction); + server.close(); + mockWebServer.close(); + } + + @Test(expected = PrepareTransactionException.class) + public void testPrepareTransactionWithPrepareTransactionExceptionThrowsErrorInvalidResults() + throws IOException, SorobanRpcErrorResponse, PrepareTransactionException { + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"e1fabdcdf0244a2a9adfab94d7748b6c\",\n" + + " \"result\": {\n" + + " \"transactionData\": \"AAAAAAAAAAIAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAFAAAAAEAAAAAAAAAB300Hyg0HZG+Qie3zvsxLvugrNtFqd3AIntWy9bg2YvZAAAAAAAAAAEAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAEAAAAAEAAAACAAAADwAAAAdDb3VudGVyAAAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAQAAAAAAFcLDAAAF8AAAAQgAAAMcAAAAAAAAAJw=\",\n" + + " \"events\": [\n" + + " \"AAAAAQAAAAAAAAAAAAAAAgAAAAAAAAADAAAADwAAAAdmbl9jYWxsAAAAAA0AAAAgxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAPAAAACWluY3JlbWVudAAAAAAAABAAAAABAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAo=\",\n" + + " \"AAAAAQAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAACAAAAAAAAAAIAAAAPAAAACWZuX3JldHVybgAAAAAAAA8AAAAJaW5jcmVtZW50AAAAAAAAAwAAABQ=\"\n" + + " ],\n" + + " \"minResourceFee\": \"58595\",\n" + + " \"results\": [\n" + + " {\n" + + " \"auth\": [\n" + + " \"AAAAAAAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAoAAAAA\"\n" + + " ],\n" + + " \"xdr\": \"AAAAAwAAABQ=\"\n" + + " },\n" + + " {\n" + + " \"auth\": [\n" + + " \"AAAAAAAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAoAAAAA\"\n" + + " ],\n" + + " \"xdr\": \"AAAAAwAAABQ=\"\n" + + " }\n" + + " ],\n" + + " \"cost\": {\n" + + " \"cpuInsns\": \"1240100\",\n" + + " \"memBytes\": \"161637\"\n" + + " },\n" + + " \"latestLedger\": \"1479\"\n" + + " }\n" + + "}"; + + Transaction transaction = buildSorobanTransaction(null, null); + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("simulateTransaction") + && sorobanRpcRequest + .getParams() + .getTransaction() + .equals(transaction.toEnvelopeXdrBase64())) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + server.prepareTransaction(transaction); + server.close(); + mockWebServer.close(); + } + + @Test + public void testSendTransaction() + throws IOException, SorobanRpcErrorResponse, PrepareTransactionException { + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"688dfcf3bcd04f52af4866e98dffe387\",\n" + + " \"result\": {\n" + + " \"status\": \"PENDING\",\n" + + " \"hash\": \"f59636c3bb27ad958c599632405ed657c3d7d55c717dbfd2644a68625e9d9e7e\",\n" + + " \"latestLedger\": \"1479\",\n" + + " \"latestLedgerCloseTime\": \"1690594566\"\n" + + " }\n" + + "}"; + + Transaction transaction = buildSorobanTransaction(null, null); + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("sendTransaction") + && sorobanRpcRequest + .getParams() + .getTransaction() + .equals(transaction.toEnvelopeXdrBase64())) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + SendTransactionResponse response = server.sendTransaction(transaction); + assertEquals(response.getStatus(), SendTransactionResponse.SendTransactionStatus.PENDING); + assertEquals(response.getHash(), transaction.hashHex()); + assertEquals(response.getLatestLedger().longValue(), 1479L); + assertEquals(response.getLatestLedgerCloseTime().longValue(), 1690594566L); + + server.close(); + mockWebServer.close(); + } + + @Test + public void testSorobanRpcErrorResponseThrows() throws IOException { + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"198cb1a8-9104-4446-a269-88bf000c2721\",\n" + + " \"error\": {\n" + + " \"code\": -32601,\n" + + " \"message\": \"method not found\",\n" + + " \"data\": \"mockTest\"\n" + + " }\n" + + "}"; + + MockWebServer mockWebServer = new MockWebServer(); + Dispatcher dispatcher = + new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) + throws InterruptedException { + SorobanRpcRequest sorobanRpcRequest = + gson.fromJson( + recordedRequest.getBody().readUtf8(), + new TypeToken>() {}.getType()); + if ("POST".equals(recordedRequest.getMethod()) + && sorobanRpcRequest.getMethod().equals("getNetwork")) { + return new MockResponse().setResponseCode(200).setBody(json); + } + return new MockResponse().setResponseCode(404); + } + }; + mockWebServer.setDispatcher(dispatcher); + mockWebServer.start(); + + HttpUrl baseUrl = mockWebServer.url(""); + SorobanServer server = new SorobanServer(baseUrl.toString()); + try { + server.getNetwork(); + fail(); + } catch (SorobanRpcErrorResponse e) { + assertEquals(e.getCode().longValue(), -32601L); + assertEquals(e.getMessage(), "method not found"); + assertEquals(e.getData(), "mockTest"); + } + + server.close(); + mockWebServer.close(); + } + + private Transaction buildSorobanTransaction( + SorobanTransactionData sorobanData, Collection auth) { + String contractId = "CDCYWK73YTYFJZZSJ5V7EDFNHYBG4QN3VUNG2IGD27KJDDPNCZKBCBXK"; + KeyPair txSubmitterKp = + KeyPair.fromSecretSeed("SAAPYAPTTRZMCUZFPG3G66V4ZMHTK4TWA6NS7U4F7Z3IMUD52EK4DDEV"); + KeyPair opInvokerKp = + KeyPair.fromSecretSeed("SAEZSI6DY7AXJFIYA4PM6SIBNEYYXIEM2MSOTHFGKHDW32MBQ7KVO6EN"); + + TransactionBuilderAccount source = new Account(txSubmitterKp.getAccountId(), 6171868004355L); + + if (auth == null) { + auth = new ArrayList<>(); + } + + return new TransactionBuilder(AccountConverter.enableMuxed(), source, Network.STANDALONE) + .setBaseFee(50000) + .addPreconditions( + TransactionPreconditions.builder().timeBounds(new TimeBounds(0, 0)).build()) + .addOperation( + InvokeHostFunctionOperation.builder() + .sourceAccount(opInvokerKp.getAccountId()) + .hostFunction( + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_INVOKE_CONTRACT) + .invokeContract( + new SCVec( + new SCVal[] { + new Address(contractId).toSCVal(), + new SCVal.Builder() + .discriminant(SCValType.SCV_SYMBOL) + .sym(new SCSymbol(new XdrString("increment"))) + .build(), + new Address(opInvokerKp.getAccountId()).toSCVal(), + new SCVal.Builder() + .discriminant(SCValType.SCV_U32) + .u32(new Uint32(10)) + .build() + })) + .build()) + .auth(auth) + .build()) + .setSorobanData(sorobanData) + .build(); + } + + private static SorobanAuthorizationEntry sorobanAuthorizationEntryFromXdrBase64( + String sorobanAuthorizationEntry) { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(sorobanAuthorizationEntry); + ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); + XdrDataInputStream xdrInputStream = new XdrDataInputStream(inputStream); + try { + return SorobanAuthorizationEntry.decode(xdrInputStream); + } catch (IOException e) { + throw new IllegalArgumentException( + "invalid ledgerEntryData: " + sorobanAuthorizationEntry, e); + } + } + + private static String ledgerKeyToXdrBase64(LedgerKey ledgerKey) { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + try { + ledgerKey.encode(xdrDataOutputStream); + } catch (IOException e) { + throw new IllegalArgumentException("invalid ledgerKey.", e); + } + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(byteArrayOutputStream.toByteArray()); + } +} diff --git a/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetEventsDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetEventsDeserializerTest.java new file mode 100644 index 000000000..0f162dd80 --- /dev/null +++ b/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetEventsDeserializerTest.java @@ -0,0 +1,98 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import static org.junit.Assert.assertEquals; + +import com.google.gson.reflect.TypeToken; +import org.junit.Test; +import org.stellar.sdk.requests.sorobanrpc.EventFilterType; +import org.stellar.sdk.responses.GsonSingleton; + +public class GetEventsDeserializerTest { + @Test + public void testDeserialize() { + SorobanRpcResponse getEventsResponse = + GsonSingleton.getInstance() + .fromJson(json, new TypeToken>() {}.getType()); + assertEquals(getEventsResponse.getResult().getLatestLedger().longValue(), 169L); + assertEquals(getEventsResponse.getResult().getEvents().size(), 3); + GetEventsResponse.EventInfo eventInfo0 = getEventsResponse.getResult().getEvents().get(0); + assertEquals(eventInfo0.getType(), EventFilterType.CONTRACT); + assertEquals(eventInfo0.getLedger().intValue(), 108); + assertEquals(eventInfo0.getLedgerClosedAt(), "2023-07-23T14:47:01Z"); + assertEquals( + eventInfo0.getContractId(), + "607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0"); + assertEquals(eventInfo0.getId(), "0000000463856472064-0000000000"); + assertEquals(eventInfo0.getPagingToken(), "0000000463856472064-0000000000"); + assertEquals(eventInfo0.getTopic().size(), 2); + assertEquals(eventInfo0.getTopic().get(0), "AAAADwAAAAdDT1VOVEVSAA=="); + assertEquals(eventInfo0.getTopic().get(1), "AAAADwAAAAlpbmNyZW1lbnQAAAA="); + assertEquals(eventInfo0.getValue().getXdr(), "AAAAAwAAAAE="); + assertEquals(eventInfo0.getInSuccessfulContractCall(), true); + + GetEventsResponse.EventInfo eventInfo1 = getEventsResponse.getResult().getEvents().get(1); + assertEquals(eventInfo1.getType(), EventFilterType.SYSTEM); + + GetEventsResponse.EventInfo eventInfo2 = getEventsResponse.getResult().getEvents().get(2); + assertEquals(eventInfo2.getType(), EventFilterType.DIAGNOSTIC); + } + + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"198cb1a8-9104-4446-a269-88bf000c2721\",\n" + + " \"result\": {\n" + + " \"events\": [\n" + + " {\n" + + " \"type\": \"contract\",\n" + + " \"ledger\": \"108\",\n" + + " \"ledgerClosedAt\": \"2023-07-23T14:47:01Z\",\n" + + " \"contractId\": \"607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0\",\n" + + " \"id\": \"0000000463856472064-0000000000\",\n" + + " \"pagingToken\": \"0000000463856472064-0000000000\",\n" + + " \"topic\": [\n" + + " \"AAAADwAAAAdDT1VOVEVSAA==\",\n" + + " \"AAAADwAAAAlpbmNyZW1lbnQAAAA=\"\n" + + " ],\n" + + " \"value\": {\n" + + " \"xdr\": \"AAAAAwAAAAE=\"\n" + + " },\n" + + " \"inSuccessfulContractCall\": true\n" + + " },\n" + + " {\n" + + " \"type\": \"system\",\n" + + " \"ledger\": \"111\",\n" + + " \"ledgerClosedAt\": \"2023-07-23T14:47:04Z\",\n" + + " \"contractId\": \"607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0\",\n" + + " \"id\": \"0000000476741373952-0000000000\",\n" + + " \"pagingToken\": \"0000000476741373952-0000000000\",\n" + + " \"topic\": [\n" + + " \"AAAADwAAAAdDT1VOVEVSAA==\",\n" + + " \"AAAADwAAAAlpbmNyZW1lbnQAAAA=\"\n" + + " ],\n" + + " \"value\": {\n" + + " \"xdr\": \"AAAAAwAAAAI=\"\n" + + " },\n" + + " \"inSuccessfulContractCall\": true\n" + + " },\n" + + " {\n" + + " \"type\": \"diagnostic\",\n" + + " \"ledger\": \"114\",\n" + + " \"ledgerClosedAt\": \"2023-07-23T14:47:07Z\",\n" + + " \"contractId\": \"607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0\",\n" + + " \"id\": \"0000000489626275840-0000000000\",\n" + + " \"pagingToken\": \"0000000489626275840-0000000000\",\n" + + " \"topic\": [\n" + + " \"AAAADwAAAAdDT1VOVEVSAA==\",\n" + + " \"AAAADwAAAAlpbmNyZW1lbnQAAAA=\"\n" + + " ],\n" + + " \"value\": {\n" + + " \"xdr\": \"AAAAAwAAAAM=\"\n" + + " },\n" + + " \"inSuccessfulContractCall\": true\n" + + " }\n" + + " ],\n" + + " \"latestLedger\": \"169\"\n" + + " }\n" + + "}"; +} diff --git a/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetHealthDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetHealthDeserializerTest.java new file mode 100644 index 000000000..fc3e33712 --- /dev/null +++ b/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetHealthDeserializerTest.java @@ -0,0 +1,27 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import static org.junit.Assert.assertEquals; + +import com.google.gson.reflect.TypeToken; +import org.junit.Test; +import org.stellar.sdk.responses.GsonSingleton; + +public class GetHealthDeserializerTest { + + @Test + public void testDeserialize() { + SorobanRpcResponse getHealthResponse = + GsonSingleton.getInstance() + .fromJson(json, new TypeToken>() {}.getType()); + assertEquals(getHealthResponse.getResult().getStatus(), "healthy"); + } + + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"198cb1a8-9104-4446-a269-88bf000c2721\",\n" + + " \"result\": {\n" + + " \"status\": \"healthy\"\n" + + " }\n" + + "}"; +} diff --git a/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerDeserializerTest.java new file mode 100644 index 000000000..360384272 --- /dev/null +++ b/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerDeserializerTest.java @@ -0,0 +1,33 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import static org.junit.Assert.assertEquals; + +import com.google.gson.reflect.TypeToken; +import org.junit.Test; +import org.stellar.sdk.responses.GsonSingleton; + +public class GetLatestLedgerDeserializerTest { + @Test + public void testDeserialize() { + SorobanRpcResponse getLatestLedgerResponse = + GsonSingleton.getInstance() + .fromJson( + json, new TypeToken>() {}.getType()); + assertEquals( + getLatestLedgerResponse.getResult().getId(), + "e73d7654b72daa637f396669182c6072549736a9e3b6fcb8e685adb61f8c910a"); + assertEquals(getLatestLedgerResponse.getResult().getProtocolVersion().intValue(), 20); + assertEquals(getLatestLedgerResponse.getResult().getSequence().intValue(), 24170); + } + + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"198cb1a8-9104-4446-a269-88bf000c2721\",\n" + + " \"result\": {\n" + + " \"id\": \"e73d7654b72daa637f396669182c6072549736a9e3b6fcb8e685adb61f8c910a\",\n" + + " \"protocolVersion\": \"20\",\n" + + " \"sequence\": 24170\n" + + " }\n" + + "}"; +} diff --git a/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetLedgerEntriesDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetLedgerEntriesDeserializerTest.java new file mode 100644 index 000000000..279e15e2f --- /dev/null +++ b/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetLedgerEntriesDeserializerTest.java @@ -0,0 +1,73 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import com.google.gson.reflect.TypeToken; +import org.junit.Test; +import org.stellar.sdk.responses.GsonSingleton; + +public class GetLedgerEntriesDeserializerTest { + + @Test + public void testDeserializeEntriesNotNull() { + SorobanRpcResponse getLedgerEntriesResponse = + GsonSingleton.getInstance() + .fromJson( + getJsonEntriesNotNull, + new TypeToken>() {}.getType()); + assertEquals(getLedgerEntriesResponse.getResult().getLatestLedger().longValue(), 1457); + assertEquals(getLedgerEntriesResponse.getResult().getEntries().size(), 1); + assertEquals( + getLedgerEntriesResponse.getResult().getEntries().get(0).getKey(), + "AAAAAAAAAADBPp7TMinJylnn+6dQXJACNc15LF+aJ2Py1BaR4P10JA=="); + assertEquals( + getLedgerEntriesResponse.getResult().getEntries().get(0).getXdr(), + "AAAAAAAAAADBPp7TMinJylnn+6dQXJACNc15LF+aJ2Py1BaR4P10JAAAABdIcjmeAAAAfgAAAAgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAArcAAAAAZMIW+A=="); + assertEquals( + getLedgerEntriesResponse + .getResult() + .getEntries() + .get(0) + .getLastModifiedLedger() + .longValue(), + 695); + } + + @Test + public void testDeserializeEntriesNull() { + SorobanRpcResponse getLedgerEntriesResponse = + GsonSingleton.getInstance() + .fromJson( + jsonEntriesNull, + new TypeToken>() {}.getType()); + assertNull(getLedgerEntriesResponse.getResult().getEntries()); + assertEquals(getLedgerEntriesResponse.getResult().getLatestLedger().longValue(), 1009L); + } + + String getJsonEntriesNotNull = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"44dc79a1b2734eb79d28fe8806345b39\",\n" + + " \"result\": {\n" + + " \"entries\": [\n" + + " {\n" + + " \"key\": \"AAAAAAAAAADBPp7TMinJylnn+6dQXJACNc15LF+aJ2Py1BaR4P10JA==\",\n" + + " \"xdr\": \"AAAAAAAAAADBPp7TMinJylnn+6dQXJACNc15LF+aJ2Py1BaR4P10JAAAABdIcjmeAAAAfgAAAAgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAArcAAAAAZMIW+A==\",\n" + + " \"lastModifiedLedgerSeq\": \"695\"\n" + + " }\n" + + " ],\n" + + " \"latestLedger\": \"1457\"\n" + + " }\n" + + "}"; + + String jsonEntriesNull = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": 8675309,\n" + + " \"result\": {\n" + + " \"entries\": null,\n" + + " \"latestLedger\": \"1009\"\n" + + " }\n" + + "}"; +} diff --git a/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetNetworkDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetNetworkDeserializerTest.java new file mode 100644 index 000000000..5148a9534 --- /dev/null +++ b/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetNetworkDeserializerTest.java @@ -0,0 +1,32 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import static org.junit.Assert.assertEquals; + +import com.google.gson.reflect.TypeToken; +import org.junit.Test; +import org.stellar.sdk.responses.GsonSingleton; + +public class GetNetworkDeserializerTest { + @Test + public void testDeserialize() { + SorobanRpcResponse getLatestLedgerResponse = + GsonSingleton.getInstance() + .fromJson(json, new TypeToken>() {}.getType()); + assertEquals( + getLatestLedgerResponse.getResult().getFriendbotUrl(), "http://localhost:8000/friendbot"); + assertEquals( + getLatestLedgerResponse.getResult().getPassphrase(), "Standalone Network ; February 2017"); + assertEquals(getLatestLedgerResponse.getResult().getProtocolVersion().intValue(), 20); + } + + String json = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"198cb1a8-9104-4446-a269-88bf000c2721\",\n" + + " \"result\": {\n" + + " \"friendbotUrl\": \"http://localhost:8000/friendbot\",\n" + + " \"passphrase\": \"Standalone Network ; February 2017\",\n" + + " \"protocolVersion\": \"20\"\n" + + " }\n" + + "}"; +} diff --git a/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetTransactionDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetTransactionDeserializerTest.java new file mode 100644 index 000000000..053f01300 --- /dev/null +++ b/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetTransactionDeserializerTest.java @@ -0,0 +1,149 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import com.google.gson.reflect.TypeToken; +import org.junit.Test; +import org.stellar.sdk.responses.GsonSingleton; + +public class GetTransactionDeserializerTest { + @Test + public void testDeserializeSuccess() { + SorobanRpcResponse getTransactionResponse = + GsonSingleton.getInstance() + .fromJson( + jsonSuccess, + new TypeToken>() {}.getType()); + assertEquals( + getTransactionResponse.getResult().getStatus(), + GetTransactionResponse.GetTransactionStatus.SUCCESS); + assertEquals(getTransactionResponse.getResult().getLatestLedger().longValue(), 79289L); + assertEquals( + getTransactionResponse.getResult().getLatestLedgerCloseTime().longValue(), 1690387240L); + assertEquals(getTransactionResponse.getResult().getOldestLedger().longValue(), 77850L); + assertEquals( + getTransactionResponse.getResult().getOldestLedgerCloseTime().longValue(), 1690379694L); + assertEquals(getTransactionResponse.getResult().getApplicationOrder().intValue(), 1); + assertEquals( + getTransactionResponse.getResult().getEnvelopeXdr(), + "AAAAAgAAAADTYKIzfa0ubKp7qjOcF+ZO8sjQutzo1iHuDh8esi9q+wABNjQAATW1AAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAAAAAAIAAAASAAAAAb3H+V1yFoNDBpje4rchxeaR7/hRNS2CAT2Dh6A8z6xrAAAADwAAAARuYW1lAAAAAAAAAAEAAAAAAAAAAwAAAAYAAAABvcf5XXIWg0MGmN7ityHF5pHv+FE1LYIBPYOHoDzPrGsAAAAPAAAACE1FVEFEQVRBAAAAAQAAAAAAAAAGAAAAAb3H+V1yFoNDBpje4rchxeaR7/hRNS2CAT2Dh6A8z6xrAAAAFAAAAAEAAAAAAAAAB++FkDTZODW0rvolF6AuIZf4w7+GQd8RofaH8u2pM+UPAAAAAAAAAAAAUrutAAAiqAAAAAAAAADIAAAAAAAAACgAAAABsi9q+wAAAEDgHR/5rU+bsXD/oPUFodyEgXFNbDm5T2+M1GarZXy+d+tZ757PBL9ysK41F1hUYz3p5CA7Urlpe3fnNjYcu1EM"); + assertEquals( + getTransactionResponse.getResult().getResultXdr(), + "AAAAAAABNCwAAAAAAAAAAQAAAAAAAAAYAAAAAJhEDjNV0Jj46jrxCj87qJ6JaYKJN4c+p5tvapkLwrn8AAAAAA=="); + assertEquals( + getTransactionResponse.getResult().getResultMetaXdr(), + "AAAAAwAAAAAAAAACAAAAAwABNbYAAAAAAAAAANNgojN9rS5sqnuqM5wX5k7yyNC63OjWIe4OHx6yL2r7AAAAF0h1s9QAATW1AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQABNbYAAAAAAAAAANNgojN9rS5sqnuqM5wX5k7yyNC63OjWIe4OHx6yL2r7AAAAF0h1s9QAATW1AAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAAAE1tgAAAABkwUMZAAAAAAAAAAEAAAAAAAAAAgAAAAMAATW2AAAAAAAAAADTYKIzfa0ubKp7qjOcF+ZO8sjQutzo1iHuDh8esi9q+wAAABdIdbPUAAE1tQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAABNbYAAAAAZMFDGQAAAAAAAAABAAE1tgAAAAAAAAAA02CiM32tLmyqe6oznBfmTvLI0Lrc6NYh7g4fHrIvavsAAAAXSHWz/AABNbUAAAABAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAwAAAAAAATW2AAAAAGTBQxkAAAAAAAAAAQAAAAAAAAAAAAAADgAAAAZUb2tlbkEAAAAAAAIAAAABAAAAAAAAAAAAAAACAAAAAAAAAAMAAAAPAAAAB2ZuX2NhbGwAAAAADQAAACC9x/ldchaDQwaY3uK3IcXmke/4UTUtggE9g4egPM+sawAAAA8AAAAEbmFtZQAAAAEAAAABAAAAAAAAAAG9x/ldchaDQwaY3uK3IcXmke/4UTUtggE9g4egPM+sawAAAAIAAAAAAAAAAgAAAA8AAAAJZm5fcmV0dXJuAAAAAAAADwAAAARuYW1lAAAADgAAAAZUb2tlbkEAAA=="); + assertEquals(getTransactionResponse.getResult().getLedger().longValue(), 79286L); + assertEquals(getTransactionResponse.getResult().getCreatedAt().longValue(), 1690387225L); + assertNull(getTransactionResponse.getResult().getFeeBump()); + } + + @Test + public void testDeserializeFailed() { + SorobanRpcResponse getTransactionResponse = + GsonSingleton.getInstance() + .fromJson( + jsonFailed, + new TypeToken>() {}.getType()); + assertEquals( + getTransactionResponse.getResult().getStatus(), + GetTransactionResponse.GetTransactionStatus.FAILED); + assertEquals(getTransactionResponse.getResult().getLatestLedger().longValue(), 79289L); + assertEquals( + getTransactionResponse.getResult().getLatestLedgerCloseTime().longValue(), 1690387240L); + assertEquals(getTransactionResponse.getResult().getOldestLedger().longValue(), 77850L); + assertEquals( + getTransactionResponse.getResult().getOldestLedgerCloseTime().longValue(), 1690379694L); + assertEquals(getTransactionResponse.getResult().getApplicationOrder().intValue(), 1); + assertEquals( + getTransactionResponse.getResult().getEnvelopeXdr(), + "AAAAAgAAAADTYKIzfa0ubKp7qjOcF+ZO8sjQutzo1iHuDh8esi9q+wABNjQAATW1AAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAAAAAAIAAAASAAAAAb3H+V1yFoNDBpje4rchxeaR7/hRNS2CAT2Dh6A8z6xrAAAADwAAAARuYW1lAAAAAAAAAAEAAAAAAAAAAwAAAAYAAAABvcf5XXIWg0MGmN7ityHF5pHv+FE1LYIBPYOHoDzPrGsAAAAPAAAACE1FVEFEQVRBAAAAAQAAAAAAAAAGAAAAAb3H+V1yFoNDBpje4rchxeaR7/hRNS2CAT2Dh6A8z6xrAAAAFAAAAAEAAAAAAAAAB++FkDTZODW0rvolF6AuIZf4w7+GQd8RofaH8u2pM+UPAAAAAAAAAAAAUrutAAAiqAAAAAAAAADIAAAAAAAAACgAAAABsi9q+wAAAEDgHR/5rU+bsXD/oPUFodyEgXFNbDm5T2+M1GarZXy+d+tZ757PBL9ysK41F1hUYz3p5CA7Urlpe3fnNjYcu1EM"); + assertEquals( + getTransactionResponse.getResult().getResultXdr(), + "AAAAAAABNCwAAAAAAAAAAQAAAAAAAAAYAAAAAJhEDjNV0Jj46jrxCj87qJ6JaYKJN4c+p5tvapkLwrn8AAAAAA=="); + assertEquals( + getTransactionResponse.getResult().getResultMetaXdr(), + "AAAAAwAAAAAAAAACAAAAAwABNbYAAAAAAAAAANNgojN9rS5sqnuqM5wX5k7yyNC63OjWIe4OHx6yL2r7AAAAF0h1s9QAATW1AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQABNbYAAAAAAAAAANNgojN9rS5sqnuqM5wX5k7yyNC63OjWIe4OHx6yL2r7AAAAF0h1s9QAATW1AAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAAAE1tgAAAABkwUMZAAAAAAAAAAEAAAAAAAAAAgAAAAMAATW2AAAAAAAAAADTYKIzfa0ubKp7qjOcF+ZO8sjQutzo1iHuDh8esi9q+wAAABdIdbPUAAE1tQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAABNbYAAAAAZMFDGQAAAAAAAAABAAE1tgAAAAAAAAAA02CiM32tLmyqe6oznBfmTvLI0Lrc6NYh7g4fHrIvavsAAAAXSHWz/AABNbUAAAABAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAwAAAAAAATW2AAAAAGTBQxkAAAAAAAAAAQAAAAAAAAAAAAAADgAAAAZUb2tlbkEAAAAAAAIAAAABAAAAAAAAAAAAAAACAAAAAAAAAAMAAAAPAAAAB2ZuX2NhbGwAAAAADQAAACC9x/ldchaDQwaY3uK3IcXmke/4UTUtggE9g4egPM+sawAAAA8AAAAEbmFtZQAAAAEAAAABAAAAAAAAAAG9x/ldchaDQwaY3uK3IcXmke/4UTUtggE9g4egPM+sawAAAAIAAAAAAAAAAgAAAA8AAAAJZm5fcmV0dXJuAAAAAAAADwAAAARuYW1lAAAADgAAAAZUb2tlbkEAAA=="); + assertEquals(getTransactionResponse.getResult().getLedger().longValue(), 79286L); + assertEquals(getTransactionResponse.getResult().getCreatedAt().longValue(), 1690387225L); + assertNull(getTransactionResponse.getResult().getFeeBump()); + } + + @Test + public void testDeserializeNotFound() { + SorobanRpcResponse getTransactionResponse = + GsonSingleton.getInstance() + .fromJson( + jsonNotFound, + new TypeToken>() {}.getType()); + assertEquals( + getTransactionResponse.getResult().getStatus(), + GetTransactionResponse.GetTransactionStatus.NOT_FOUND); + assertEquals(getTransactionResponse.getResult().getLatestLedger().longValue(), 79285L); + assertEquals( + getTransactionResponse.getResult().getLatestLedgerCloseTime().longValue(), 1690387220L); + assertEquals(getTransactionResponse.getResult().getOldestLedger().longValue(), 77846L); + assertEquals( + getTransactionResponse.getResult().getOldestLedgerCloseTime().longValue(), 1690379672L); + + assertNull(getTransactionResponse.getResult().getApplicationOrder()); + assertNull(getTransactionResponse.getResult().getEnvelopeXdr()); + assertNull(getTransactionResponse.getResult().getResultXdr()); + assertNull(getTransactionResponse.getResult().getResultMetaXdr()); + assertNull(getTransactionResponse.getResult().getLedger()); + assertNull(getTransactionResponse.getResult().getCreatedAt()); + assertNull(getTransactionResponse.getResult().getFeeBump()); + } + + String jsonSuccess = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"198cb1a8-9104-4446-a269-88bf000c2721\",\n" + + " \"result\": {\n" + + " \"status\": \"SUCCESS\",\n" + + " \"latestLedger\": \"79289\",\n" + + " \"latestLedgerCloseTime\": \"1690387240\",\n" + + " \"oldestLedger\": \"77850\",\n" + + " \"oldestLedgerCloseTime\": \"1690379694\",\n" + + " \"applicationOrder\": 1,\n" + + " \"envelopeXdr\": \"AAAAAgAAAADTYKIzfa0ubKp7qjOcF+ZO8sjQutzo1iHuDh8esi9q+wABNjQAATW1AAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAAAAAAIAAAASAAAAAb3H+V1yFoNDBpje4rchxeaR7/hRNS2CAT2Dh6A8z6xrAAAADwAAAARuYW1lAAAAAAAAAAEAAAAAAAAAAwAAAAYAAAABvcf5XXIWg0MGmN7ityHF5pHv+FE1LYIBPYOHoDzPrGsAAAAPAAAACE1FVEFEQVRBAAAAAQAAAAAAAAAGAAAAAb3H+V1yFoNDBpje4rchxeaR7/hRNS2CAT2Dh6A8z6xrAAAAFAAAAAEAAAAAAAAAB++FkDTZODW0rvolF6AuIZf4w7+GQd8RofaH8u2pM+UPAAAAAAAAAAAAUrutAAAiqAAAAAAAAADIAAAAAAAAACgAAAABsi9q+wAAAEDgHR/5rU+bsXD/oPUFodyEgXFNbDm5T2+M1GarZXy+d+tZ757PBL9ysK41F1hUYz3p5CA7Urlpe3fnNjYcu1EM\",\n" + + " \"resultXdr\": \"AAAAAAABNCwAAAAAAAAAAQAAAAAAAAAYAAAAAJhEDjNV0Jj46jrxCj87qJ6JaYKJN4c+p5tvapkLwrn8AAAAAA==\",\n" + + " \"resultMetaXdr\": \"AAAAAwAAAAAAAAACAAAAAwABNbYAAAAAAAAAANNgojN9rS5sqnuqM5wX5k7yyNC63OjWIe4OHx6yL2r7AAAAF0h1s9QAATW1AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQABNbYAAAAAAAAAANNgojN9rS5sqnuqM5wX5k7yyNC63OjWIe4OHx6yL2r7AAAAF0h1s9QAATW1AAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAAAE1tgAAAABkwUMZAAAAAAAAAAEAAAAAAAAAAgAAAAMAATW2AAAAAAAAAADTYKIzfa0ubKp7qjOcF+ZO8sjQutzo1iHuDh8esi9q+wAAABdIdbPUAAE1tQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAABNbYAAAAAZMFDGQAAAAAAAAABAAE1tgAAAAAAAAAA02CiM32tLmyqe6oznBfmTvLI0Lrc6NYh7g4fHrIvavsAAAAXSHWz/AABNbUAAAABAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAwAAAAAAATW2AAAAAGTBQxkAAAAAAAAAAQAAAAAAAAAAAAAADgAAAAZUb2tlbkEAAAAAAAIAAAABAAAAAAAAAAAAAAACAAAAAAAAAAMAAAAPAAAAB2ZuX2NhbGwAAAAADQAAACC9x/ldchaDQwaY3uK3IcXmke/4UTUtggE9g4egPM+sawAAAA8AAAAEbmFtZQAAAAEAAAABAAAAAAAAAAG9x/ldchaDQwaY3uK3IcXmke/4UTUtggE9g4egPM+sawAAAAIAAAAAAAAAAgAAAA8AAAAJZm5fcmV0dXJuAAAAAAAADwAAAARuYW1lAAAADgAAAAZUb2tlbkEAAA==\",\n" + + " \"ledger\": \"79286\",\n" + + " \"createdAt\": \"1690387225\"\n" + + " }\n" + + "}"; + + String jsonNotFound = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"198cb1a8-9104-4446-a269-88bf000c2721\",\n" + + " \"result\": {\n" + + " \"status\": \"NOT_FOUND\",\n" + + " \"latestLedger\": \"79285\",\n" + + " \"latestLedgerCloseTime\": \"1690387220\",\n" + + " \"oldestLedger\": \"77846\",\n" + + " \"oldestLedgerCloseTime\": \"1690379672\"\n" + + " }\n" + + "}"; + + String jsonFailed = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"198cb1a8-9104-4446-a269-88bf000c2721\",\n" + + " \"result\": {\n" + + " \"status\": \"FAILED\",\n" + + " \"latestLedger\": \"79289\",\n" + + " \"latestLedgerCloseTime\": \"1690387240\",\n" + + " \"oldestLedger\": \"77850\",\n" + + " \"oldestLedgerCloseTime\": \"1690379694\",\n" + + " \"applicationOrder\": 1,\n" + + " \"envelopeXdr\": \"AAAAAgAAAADTYKIzfa0ubKp7qjOcF+ZO8sjQutzo1iHuDh8esi9q+wABNjQAATW1AAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAAAAAAIAAAASAAAAAb3H+V1yFoNDBpje4rchxeaR7/hRNS2CAT2Dh6A8z6xrAAAADwAAAARuYW1lAAAAAAAAAAEAAAAAAAAAAwAAAAYAAAABvcf5XXIWg0MGmN7ityHF5pHv+FE1LYIBPYOHoDzPrGsAAAAPAAAACE1FVEFEQVRBAAAAAQAAAAAAAAAGAAAAAb3H+V1yFoNDBpje4rchxeaR7/hRNS2CAT2Dh6A8z6xrAAAAFAAAAAEAAAAAAAAAB++FkDTZODW0rvolF6AuIZf4w7+GQd8RofaH8u2pM+UPAAAAAAAAAAAAUrutAAAiqAAAAAAAAADIAAAAAAAAACgAAAABsi9q+wAAAEDgHR/5rU+bsXD/oPUFodyEgXFNbDm5T2+M1GarZXy+d+tZ757PBL9ysK41F1hUYz3p5CA7Urlpe3fnNjYcu1EM\",\n" + + " \"resultXdr\": \"AAAAAAABNCwAAAAAAAAAAQAAAAAAAAAYAAAAAJhEDjNV0Jj46jrxCj87qJ6JaYKJN4c+p5tvapkLwrn8AAAAAA==\",\n" + + " \"resultMetaXdr\": \"AAAAAwAAAAAAAAACAAAAAwABNbYAAAAAAAAAANNgojN9rS5sqnuqM5wX5k7yyNC63OjWIe4OHx6yL2r7AAAAF0h1s9QAATW1AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQABNbYAAAAAAAAAANNgojN9rS5sqnuqM5wX5k7yyNC63OjWIe4OHx6yL2r7AAAAF0h1s9QAATW1AAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAAAE1tgAAAABkwUMZAAAAAAAAAAEAAAAAAAAAAgAAAAMAATW2AAAAAAAAAADTYKIzfa0ubKp7qjOcF+ZO8sjQutzo1iHuDh8esi9q+wAAABdIdbPUAAE1tQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAABNbYAAAAAZMFDGQAAAAAAAAABAAE1tgAAAAAAAAAA02CiM32tLmyqe6oznBfmTvLI0Lrc6NYh7g4fHrIvavsAAAAXSHWz/AABNbUAAAABAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAwAAAAAAATW2AAAAAGTBQxkAAAAAAAAAAQAAAAAAAAAAAAAADgAAAAZUb2tlbkEAAAAAAAIAAAABAAAAAAAAAAAAAAACAAAAAAAAAAMAAAAPAAAAB2ZuX2NhbGwAAAAADQAAACC9x/ldchaDQwaY3uK3IcXmke/4UTUtggE9g4egPM+sawAAAA8AAAAEbmFtZQAAAAEAAAABAAAAAAAAAAG9x/ldchaDQwaY3uK3IcXmke/4UTUtggE9g4egPM+sawAAAAIAAAAAAAAAAgAAAA8AAAAJZm5fcmV0dXJuAAAAAAAADwAAAARuYW1lAAAADgAAAAZUb2tlbkEAAA==\",\n" + + " \"ledger\": \"79286\",\n" + + " \"createdAt\": \"1690387225\"\n" + + " }\n" + + "}"; +} diff --git a/src/test/java/org/stellar/sdk/responses/sorobanrpc/SendTransactionDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/sorobanrpc/SendTransactionDeserializerTest.java new file mode 100644 index 000000000..decdeed5d --- /dev/null +++ b/src/test/java/org/stellar/sdk/responses/sorobanrpc/SendTransactionDeserializerTest.java @@ -0,0 +1,123 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import com.google.gson.reflect.TypeToken; +import org.junit.Test; +import org.stellar.sdk.responses.GsonSingleton; + +public class SendTransactionDeserializerTest { + @Test + public void testDeserializeError() { + SorobanRpcResponse getTransactionResponse = + GsonSingleton.getInstance() + .fromJson( + jsonError, + new TypeToken>() {}.getType()); + SendTransactionResponse data = getTransactionResponse.getResult(); + assertEquals(data.getErrorResultXdr(), "AAAAAAAAf67////6AAAAAA=="); + assertEquals(data.getStatus(), SendTransactionResponse.SendTransactionStatus.ERROR); + assertEquals( + data.getHash(), "3b0c982bb8245be869d34ec822f999deb68f3a8480cf6e663643cf2f6e397e64"); + assertEquals(data.getLatestLedger().longValue(), 62L); + assertEquals(data.getLatestLedgerCloseTime().longValue(), 1690447331L); + } + + @Test + public void testDeserializePending() { + SorobanRpcResponse getTransactionResponse = + GsonSingleton.getInstance() + .fromJson( + jsonPending, + new TypeToken>() {}.getType()); + SendTransactionResponse data = getTransactionResponse.getResult(); + assertNull(data.getErrorResultXdr()); + assertEquals(data.getStatus(), SendTransactionResponse.SendTransactionStatus.PENDING); + assertEquals( + data.getHash(), "5e58bb3530cf4ff852805ad1a5077b181b227e541301bdfa17f5a66991910d13"); + assertEquals(data.getLatestLedger().longValue(), 3449L); + assertEquals(data.getLatestLedgerCloseTime().longValue(), 1690444223L); + } + + @Test + public void testDeserializeDuplicate() { + SorobanRpcResponse getTransactionResponse = + GsonSingleton.getInstance() + .fromJson( + jsonDuplicate, + new TypeToken>() {}.getType()); + SendTransactionResponse data = getTransactionResponse.getResult(); + assertNull(data.getErrorResultXdr()); + assertEquals(data.getStatus(), SendTransactionResponse.SendTransactionStatus.DUPLICATE); + assertEquals( + data.getHash(), "5e58bb3530cf4ff852805ad1a5077b181b227e541301bdfa17f5a66991910d13"); + assertEquals(data.getLatestLedger().longValue(), 3449L); + assertEquals(data.getLatestLedgerCloseTime().longValue(), 1690444223L); + } + + @Test + public void testDeserializeTryAgainLater() { + SorobanRpcResponse getTransactionResponse = + GsonSingleton.getInstance() + .fromJson( + jsonTryAgainLater, + new TypeToken>() {}.getType()); + SendTransactionResponse data = getTransactionResponse.getResult(); + assertNull(data.getErrorResultXdr()); + assertEquals(data.getStatus(), SendTransactionResponse.SendTransactionStatus.TRY_AGAIN_LATER); + assertEquals( + data.getHash(), "5e58bb3530cf4ff852805ad1a5077b181b227e541301bdfa17f5a66991910d13"); + assertEquals(data.getLatestLedger().longValue(), 3449L); + assertEquals(data.getLatestLedgerCloseTime().longValue(), 1690444223L); + } + + String jsonError = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"b96311af98d54d7cbb8736dbb0ed7730\",\n" + + " \"result\": {\n" + + " \"errorResultXdr\": \"AAAAAAAAf67////6AAAAAA==\",\n" + + " \"status\": \"ERROR\",\n" + + " \"hash\": \"3b0c982bb8245be869d34ec822f999deb68f3a8480cf6e663643cf2f6e397e64\",\n" + + " \"latestLedger\": \"62\",\n" + + " \"latestLedgerCloseTime\": \"1690447331\"\n" + + " }\n" + + "}"; + + String jsonPending = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"ce651a0633e8407e9f377127bd649476\",\n" + + " \"result\": {\n" + + " \"status\": \"PENDING\",\n" + + " \"hash\": \"5e58bb3530cf4ff852805ad1a5077b181b227e541301bdfa17f5a66991910d13\",\n" + + " \"latestLedger\": \"3449\",\n" + + " \"latestLedgerCloseTime\": \"1690444223\"\n" + + " }\n" + + "}"; + + String jsonDuplicate = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"ce651a0633e8407e9f377127bd649476\",\n" + + " \"result\": {\n" + + " \"status\": \"DUPLICATE\",\n" + + " \"hash\": \"5e58bb3530cf4ff852805ad1a5077b181b227e541301bdfa17f5a66991910d13\",\n" + + " \"latestLedger\": \"3449\",\n" + + " \"latestLedgerCloseTime\": \"1690444223\"\n" + + " }\n" + + "}"; + + String jsonTryAgainLater = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"ce651a0633e8407e9f377127bd649476\",\n" + + " \"result\": {\n" + + " \"status\": \"TRY_AGAIN_LATER\",\n" + + " \"hash\": \"5e58bb3530cf4ff852805ad1a5077b181b227e541301bdfa17f5a66991910d13\",\n" + + " \"latestLedger\": \"3449\",\n" + + " \"latestLedgerCloseTime\": \"1690444223\"\n" + + " }\n" + + "}"; +} diff --git a/src/test/java/org/stellar/sdk/responses/sorobanrpc/SimulateTransactionDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/sorobanrpc/SimulateTransactionDeserializerTest.java new file mode 100644 index 000000000..2da5249e1 --- /dev/null +++ b/src/test/java/org/stellar/sdk/responses/sorobanrpc/SimulateTransactionDeserializerTest.java @@ -0,0 +1,104 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import com.google.gson.reflect.TypeToken; +import org.junit.Test; +import org.stellar.sdk.responses.GsonSingleton; + +public class SimulateTransactionDeserializerTest { + @Test + public void testDeserializeSuccess() { + SorobanRpcResponse simulateTransactionResponse = + GsonSingleton.getInstance() + .fromJson( + jsonSuccess, + new TypeToken>() {}.getType()); + SimulateTransactionResponse data = simulateTransactionResponse.getResult(); + assertEquals( + data.getTransactionData(), + "AAAAAAAAAAMAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAABgAAAAHFiyv7xPBU5zJPa/IMrT4CbkG7rRptIMPX1JGN7RZUEQAAABQAAAABAAAAAAAAAAd9NB8oNB2RvkInt877MS77oKzbRandwCJ7VsvW4NmL2QAAAAAAAAACAAAABgAAAAAAAAAAWLfEosjyl6qPPSRxKB/fzOyv5I5WYzE+wY4Spz7KmKEAAAAVWqB4d0kcwg0AAAAAAAAAAAAAAAYAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAQAAAAAQAAAAIAAAAPAAAAB0NvdW50ZXIAAAAAEgAAAAAAAAAAWLfEosjyl6qPPSRxKB/fzOyv5I5WYzE+wY4Spz7KmKEAAAABAAAAAAAWW9sAAAYkAAABnAAAA2AAAAAAAAAAqQ=="); + assertEquals(data.getEvents().size(), 2); + assertEquals( + data.getEvents().get(0), + "AAAAAQAAAAAAAAAAAAAAAgAAAAAAAAADAAAADwAAAAdmbl9jYWxsAAAAAA0AAAAgxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAPAAAACWluY3JlbWVudAAAAAAAABAAAAABAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAo="); + assertEquals( + data.getEvents().get(1), + "AAAAAQAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAACAAAAAAAAAAIAAAAPAAAACWZuX3JldHVybgAAAAAAAA8AAAAJaW5jcmVtZW50AAAAAAAAAwAAAAo="); + assertEquals(data.getMinResourceFee().longValue(), 94876L); + assertEquals(data.getResults().size(), 1); + assertEquals(data.getResults().get(0).getAuth().size(), 1); + assertEquals( + data.getResults().get(0).getAuth().get(0), + "AAAAAQAAAAAAAAAAWLfEosjyl6qPPSRxKB/fzOyv5I5WYzE+wY4Spz7KmKFaoHh3SRzCDQAAAAAAAAAAAAAAAAAAAAHFiyv7xPBU5zJPa/IMrT4CbkG7rRptIMPX1JGN7RZUEQAAAAlpbmNyZW1lbnQAAAAAAAACAAAAEgAAAAAAAAAAWLfEosjyl6qPPSRxKB/fzOyv5I5WYzE+wY4Spz7KmKEAAAADAAAACgAAAAA="); + assertEquals(data.getResults().get(0).getXdr(), "AAAAAwAAAAo="); + assertEquals(data.getCost().getCpuInstructions().longValue(), 1274180L); + assertEquals(data.getCost().getMemoryBytes().longValue(), 162857L); + assertEquals(data.getLatestLedger().longValue(), 694L); + assertNull(data.getError()); + } + + @Test + public void testDeserializeFailed() { + SorobanRpcResponse simulateTransactionResponse = + GsonSingleton.getInstance() + .fromJson( + jsonFailed, + new TypeToken>() {}.getType()); + SimulateTransactionResponse data = simulateTransactionResponse.getResult(); + assertEquals( + data.getError(), + "HostError: Error(WasmVm, MissingValue)\n\nEvent log (newest first):\n 0: [Diagnostic Event] contract:607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0, topics:[error, Error(WasmVm, MissingValue)], data:[\"invoking unknown export\", increment]\n 1: [Diagnostic Event] topics:[fn_call, Bytes(607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0), increment], data:[Address(Account(58b7c4a2c8f297aa8f3d2471281fdfccecafe48e5663313ec18e12a73eca98a1)), 10]\n\nBacktrace (newest first):\n 0: soroban_env_host::vm::Vm::invoke_function_raw\n 1: soroban_env_host::host::frame::::call_n_internal\n 2: soroban_env_host::host::frame::::invoke_function\n 3: preflight::preflight_invoke_hf_op::{{closure}}\n 4: preflight::catch_preflight_panic\n 5: _cgo_a3255893d7fd_Cfunc_preflight_invoke_hf_op\n at /tmp/go-build/cgo-gcc-prolog:99:11\n 6: runtime.asmcgocall\n at ./runtime/asm_amd64.s:848\n\n"); + assertEquals(data.getTransactionData(), ""); + assertNull(data.getEvents()); + assertEquals(data.getMinResourceFee().longValue(), 0L); + assertEquals(data.getCost().getCpuInstructions().longValue(), 0L); + assertEquals(data.getCost().getMemoryBytes().longValue(), 0L); + assertEquals(data.getLatestLedger().longValue(), 898L); + } + + String jsonSuccess = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"4a69486e5a83404bbf9772f3f02c21e5\",\n" + + " \"result\": {\n" + + " \"transactionData\": \"AAAAAAAAAAMAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAABgAAAAHFiyv7xPBU5zJPa/IMrT4CbkG7rRptIMPX1JGN7RZUEQAAABQAAAABAAAAAAAAAAd9NB8oNB2RvkInt877MS77oKzbRandwCJ7VsvW4NmL2QAAAAAAAAACAAAABgAAAAAAAAAAWLfEosjyl6qPPSRxKB/fzOyv5I5WYzE+wY4Spz7KmKEAAAAVWqB4d0kcwg0AAAAAAAAAAAAAAAYAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAQAAAAAQAAAAIAAAAPAAAAB0NvdW50ZXIAAAAAEgAAAAAAAAAAWLfEosjyl6qPPSRxKB/fzOyv5I5WYzE+wY4Spz7KmKEAAAABAAAAAAAWW9sAAAYkAAABnAAAA2AAAAAAAAAAqQ==\",\n" + + " \"events\": [\n" + + " \"AAAAAQAAAAAAAAAAAAAAAgAAAAAAAAADAAAADwAAAAdmbl9jYWxsAAAAAA0AAAAgxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAPAAAACWluY3JlbWVudAAAAAAAABAAAAABAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAo=\",\n" + + " \"AAAAAQAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAACAAAAAAAAAAIAAAAPAAAACWZuX3JldHVybgAAAAAAAA8AAAAJaW5jcmVtZW50AAAAAAAAAwAAAAo=\"\n" + + " ],\n" + + " \"minResourceFee\": \"94876\",\n" + + " \"results\": [\n" + + " {\n" + + " \"auth\": [\n" + + " \"AAAAAQAAAAAAAAAAWLfEosjyl6qPPSRxKB/fzOyv5I5WYzE+wY4Spz7KmKFaoHh3SRzCDQAAAAAAAAAAAAAAAAAAAAHFiyv7xPBU5zJPa/IMrT4CbkG7rRptIMPX1JGN7RZUEQAAAAlpbmNyZW1lbnQAAAAAAAACAAAAEgAAAAAAAAAAWLfEosjyl6qPPSRxKB/fzOyv5I5WYzE+wY4Spz7KmKEAAAADAAAACgAAAAA=\"\n" + + " ],\n" + + " \"xdr\": \"AAAAAwAAAAo=\"\n" + + " }\n" + + " ],\n" + + " \"cost\": {\n" + + " \"cpuInsns\": \"1274180\",\n" + + " \"memBytes\": \"162857\"\n" + + " },\n" + + " \"latestLedger\": \"694\"\n" + + " }\n" + + "}"; + + String jsonFailed = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"7b6ada2bdec04ee28147d1557aadc3cf\",\n" + + " \"result\": {\n" + + " \"error\": \"HostError: Error(WasmVm, MissingValue)\\n\\nEvent log (newest first):\\n 0: [Diagnostic Event] contract:607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0, topics:[error, Error(WasmVm, MissingValue)], data:[\\\"invoking unknown export\\\", increment]\\n 1: [Diagnostic Event] topics:[fn_call, Bytes(607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0), increment], data:[Address(Account(58b7c4a2c8f297aa8f3d2471281fdfccecafe48e5663313ec18e12a73eca98a1)), 10]\\n\\nBacktrace (newest first):\\n 0: soroban_env_host::vm::Vm::invoke_function_raw\\n 1: soroban_env_host::host::frame::::call_n_internal\\n 2: soroban_env_host::host::frame::::invoke_function\\n 3: preflight::preflight_invoke_hf_op::{{closure}}\\n 4: preflight::catch_preflight_panic\\n 5: _cgo_a3255893d7fd_Cfunc_preflight_invoke_hf_op\\n at /tmp/go-build/cgo-gcc-prolog:99:11\\n 6: runtime.asmcgocall\\n at ./runtime/asm_amd64.s:848\\n\\n\",\n" + + " \"transactionData\": \"\",\n" + + " \"events\": null,\n" + + " \"minResourceFee\": \"0\",\n" + + " \"cost\": {\n" + + " \"cpuInsns\": \"0\",\n" + + " \"memBytes\": \"0\"\n" + + " },\n" + + " \"latestLedger\": \"898\"\n" + + " }\n" + + "}"; +} diff --git a/src/test/java/org/stellar/sdk/responses/sorobanrpc/SorobanRpcDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/sorobanrpc/SorobanRpcDeserializerTest.java new file mode 100644 index 000000000..cd85ec4b0 --- /dev/null +++ b/src/test/java/org/stellar/sdk/responses/sorobanrpc/SorobanRpcDeserializerTest.java @@ -0,0 +1,56 @@ +package org.stellar.sdk.responses.sorobanrpc; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import com.google.gson.reflect.TypeToken; +import org.junit.Test; +import org.stellar.sdk.responses.GsonSingleton; + +public class SorobanRpcDeserializerTest { + @Test + public void testDeserializeSuccess() { + SorobanRpcResponse sorobanRpcResponse = + GsonSingleton.getInstance() + .fromJson( + jsonSuccess, new TypeToken>() {}.getType()); + assertEquals(sorobanRpcResponse.getJsonRpc(), "2.0"); + assertEquals(sorobanRpcResponse.getId(), "198cb1a8-9104-4446-a269-88bf000c2721"); + assertNotNull(sorobanRpcResponse.getResult()); + assertNull(sorobanRpcResponse.getError()); + } + + @Test + public void testDeserializeError() { + SorobanRpcResponse sorobanRpcResponse = + GsonSingleton.getInstance() + .fromJson( + jsonError, new TypeToken>() {}.getType()); + assertEquals(sorobanRpcResponse.getJsonRpc(), "2.0"); + assertEquals(sorobanRpcResponse.getId(), "e860b82a-1738-4646-a999-b97ea3e117eb"); + assertNull(sorobanRpcResponse.getResult()); + assertNotNull(sorobanRpcResponse.getError()); + assertEquals(sorobanRpcResponse.getError().getCode().longValue(), -32602); + assertEquals(sorobanRpcResponse.getError().getMessage(), "startLedger must be positive"); + } + + String jsonSuccess = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"198cb1a8-9104-4446-a269-88bf000c2721\",\n" + + " \"result\": {\n" + + " \"status\": \"healthy\"\n" + + " }\n" + + "}"; + + String jsonError = + "{\n" + + " \"jsonrpc\": \"2.0\",\n" + + " \"id\": \"e860b82a-1738-4646-a999-b97ea3e117eb\",\n" + + " \"error\": {\n" + + " \"code\": -32602,\n" + + " \"message\": \"startLedger must be positive\"\n" + + " }\n" + + "}"; +} From 17180d9de93730c1ad37f95f598d0c8ff95791a1 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Wed, 9 Aug 2023 01:23:45 +0800 Subject: [PATCH 06/29] Correct the data type of certain fields to store the expected design values. (#498) --- .../org/stellar/sdk/AllowTrustOperation.java | 10 ++- .../sdk/BumpFootprintExpirationOperation.java | 11 +-- .../java/org/stellar/sdk/LedgerBounds.java | 13 +-- src/main/java/org/stellar/sdk/Memo.java | 15 +++- src/main/java/org/stellar/sdk/MemoId.java | 24 ++++-- src/main/java/org/stellar/sdk/Predicate.java | 41 ++++++++-- .../java/org/stellar/sdk/Sep10Challenge.java | 14 ++-- .../org/stellar/sdk/SetOptionsOperation.java | 28 +++---- .../sdk/SetTrustlineFlagsOperation.java | 6 +- src/main/java/org/stellar/sdk/StrKey.java | 21 +++-- src/main/java/org/stellar/sdk/TimeBounds.java | 46 +++++++---- .../java/org/stellar/sdk/Transaction.java | 11 +-- .../org/stellar/sdk/TransactionBuilder.java | 37 ++++++--- .../stellar/sdk/TransactionPreconditions.java | 47 +++++++---- .../sdk/responses/PredicateDeserializer.java | 13 ++- .../responses/TransactionDeserializer.java | 3 +- .../stellar/sdk/xdr/AuthenticatedMessage.java | 7 +- src/main/java/org/stellar/sdk/xdr/Uint32.java | 12 +-- src/main/java/org/stellar/sdk/xdr/Uint64.java | 12 +-- .../sdk/xdr/XdrUnsignedHyperInteger.java | 77 ++++++++++++++++++ .../stellar/sdk/xdr/XdrUnsignedInteger.java | 65 +++++++++++++++ .../BumpFootprintExpirationOperationTest.java | 36 ++++++--- .../stellar/sdk/ClaimableBalanceIdTest.java | 3 +- .../sdk/InvokeHostFunctionOperationTest.java | 3 +- src/test/java/org/stellar/sdk/MemoTest.java | 13 +-- .../java/org/stellar/sdk/OperationTest.java | 4 +- .../java/org/stellar/sdk/PredicateTest.java | 25 ++++++ .../org/stellar/sdk/Sep10ChallengeTest.java | 4 +- .../org/stellar/sdk/SorobanServerTest.java | 11 +-- src/test/java/org/stellar/sdk/StrKeyTest.java | 4 +- .../java/org/stellar/sdk/TimeBoundsTest.java | 27 ++++--- .../stellar/sdk/TransactionBuilderTest.java | 80 +++++++++++++------ .../sdk/TransactionPreconditionsTest.java | 42 +++++----- .../java/org/stellar/sdk/TransactionTest.java | 24 +++--- src/test/java/org/stellar/sdk/UtilTest.java | 8 +- .../sdk/responses/EffectDeserializerTest.java | 8 +- .../responses/OperationDeserializerTest.java | 2 +- .../sdk/xdr/AccountEntryDecodeTest.java | 20 +++-- 38 files changed, 587 insertions(+), 240 deletions(-) create mode 100644 src/main/java/org/stellar/sdk/xdr/XdrUnsignedHyperInteger.java create mode 100644 src/main/java/org/stellar/sdk/xdr/XdrUnsignedInteger.java create mode 100644 src/test/java/org/stellar/sdk/PredicateTest.java diff --git a/src/main/java/org/stellar/sdk/AllowTrustOperation.java b/src/main/java/org/stellar/sdk/AllowTrustOperation.java index 53312fe9e..2ef0e823c 100644 --- a/src/main/java/org/stellar/sdk/AllowTrustOperation.java +++ b/src/main/java/org/stellar/sdk/AllowTrustOperation.java @@ -69,11 +69,13 @@ org.stellar.sdk.xdr.Operation.OperationBody toOperationBody(AccountConverter acc Uint32 flag = new Uint32(); // authorize if (authorize) { - flag.setUint32(TrustLineFlags.AUTHORIZED_FLAG.getValue()); + flag.setUint32(new XdrUnsignedInteger(TrustLineFlags.AUTHORIZED_FLAG.getValue())); } else if (authorizeToMaintainLiabilities) { - flag.setUint32(TrustLineFlags.AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG.getValue()); + flag.setUint32( + new XdrUnsignedInteger( + TrustLineFlags.AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG.getValue())); } else { - flag.setUint32(0); + flag.setUint32(new XdrUnsignedInteger(0)); } op.setAuthorize(flag); @@ -110,7 +112,7 @@ public static class Builder { throw new RuntimeException("Unknown asset code"); } - int flag = op.getAuthorize().getUint32().intValue(); + int flag = op.getAuthorize().getUint32().getNumber().intValue(); if (flag == TrustLineFlags.AUTHORIZED_FLAG.getValue()) { authorize = true; authorizeToMaintainLiabilities = false; diff --git a/src/main/java/org/stellar/sdk/BumpFootprintExpirationOperation.java b/src/main/java/org/stellar/sdk/BumpFootprintExpirationOperation.java index 4949a5ea5..489f9a85c 100644 --- a/src/main/java/org/stellar/sdk/BumpFootprintExpirationOperation.java +++ b/src/main/java/org/stellar/sdk/BumpFootprintExpirationOperation.java @@ -8,6 +8,7 @@ import org.stellar.sdk.xdr.ExtensionPoint; import org.stellar.sdk.xdr.OperationType; import org.stellar.sdk.xdr.Uint32; +import org.stellar.sdk.xdr.XdrUnsignedInteger; /** * Represents > extends OperationBuilder { - public B ledgersToExpire(Integer ledgersToExpire) { - if (ledgersToExpire <= 0) { + public B ledgersToExpire(Long ledgersToExpire) { + if (ledgersToExpire <= 0 || ledgersToExpire > 0xFFFFFFFFL) { throw new IllegalArgumentException("ledgersToExpire isn't a ledger quantity (uint32)"); } this.ledgersToExpire = ledgersToExpire; diff --git a/src/main/java/org/stellar/sdk/LedgerBounds.java b/src/main/java/org/stellar/sdk/LedgerBounds.java index f9bd6d277..37c75ac15 100644 --- a/src/main/java/org/stellar/sdk/LedgerBounds.java +++ b/src/main/java/org/stellar/sdk/LedgerBounds.java @@ -2,6 +2,7 @@ import lombok.Value; import org.stellar.sdk.xdr.Uint32; +import org.stellar.sdk.xdr.XdrUnsignedInteger; @Value @lombok.Builder @@ -10,20 +11,20 @@ * href="https://github.com/stellar/stellar-protocol/blob/master/core/cap-0021.md#specification">CAP-21 */ public class LedgerBounds { - int minLedger; - int maxLedger; + long minLedger; + long maxLedger; public static LedgerBounds fromXdr(org.stellar.sdk.xdr.LedgerBounds xdrLedgerBounds) { return new LedgerBoundsBuilder() - .minLedger(xdrLedgerBounds.getMinLedger().getUint32()) - .maxLedger(xdrLedgerBounds.getMaxLedger().getUint32()) + .minLedger(xdrLedgerBounds.getMinLedger().getUint32().getNumber()) + .maxLedger(xdrLedgerBounds.getMaxLedger().getUint32().getNumber()) .build(); } public org.stellar.sdk.xdr.LedgerBounds toXdr() { return new org.stellar.sdk.xdr.LedgerBounds.Builder() - .maxLedger(new Uint32(maxLedger)) - .minLedger(new Uint32(minLedger)) + .maxLedger(new Uint32(new XdrUnsignedInteger(maxLedger))) + .minLedger(new Uint32(new XdrUnsignedInteger(minLedger))) .build(); } } diff --git a/src/main/java/org/stellar/sdk/Memo.java b/src/main/java/org/stellar/sdk/Memo.java index 697347995..a5ab82afa 100644 --- a/src/main/java/org/stellar/sdk/Memo.java +++ b/src/main/java/org/stellar/sdk/Memo.java @@ -1,5 +1,7 @@ package org.stellar.sdk; +import java.math.BigInteger; + /** * The memo contains optional extra information. It is the responsibility of the client to interpret * this value. Memos can be one of the following types: @@ -46,7 +48,16 @@ public static MemoText text(byte[] text) { * * @param id */ - public static MemoId id(long id) { + public static MemoId id(BigInteger id) { + return new MemoId(id); + } + + /** + * Creates new {@link MemoId} instance. + * + * @param id + */ + public static MemoId id(Long id) { return new MemoId(id); } @@ -91,7 +102,7 @@ public static Memo fromXdr(org.stellar.sdk.xdr.Memo memo) { case MEMO_NONE: return none(); case MEMO_ID: - return id(memo.getId().getUint64().longValue()); + return id(memo.getId().getUint64().getNumber()); case MEMO_TEXT: return text(memo.getText().getBytes()); case MEMO_HASH: diff --git a/src/main/java/org/stellar/sdk/MemoId.java b/src/main/java/org/stellar/sdk/MemoId.java index f7b0de8ca..f702f2029 100644 --- a/src/main/java/org/stellar/sdk/MemoId.java +++ b/src/main/java/org/stellar/sdk/MemoId.java @@ -1,19 +1,28 @@ package org.stellar.sdk; import com.google.common.base.Objects; -import com.google.common.primitives.UnsignedLongs; +import java.math.BigInteger; import org.stellar.sdk.xdr.MemoType; import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; /** Represents MEMO_ID. */ public class MemoId extends Memo { - private long id; + private final BigInteger id; - public MemoId(long id) { + public MemoId(BigInteger id) { + if (id.compareTo(XdrUnsignedHyperInteger.MIN_VALUE) < 0 + || id.compareTo(XdrUnsignedHyperInteger.MAX_VALUE) > 0) { + throw new IllegalArgumentException("MEMO_ID must be between 0 and 2^64-1"); + } this.id = id; } - public long getId() { + public MemoId(Long id) { + this(BigInteger.valueOf(id)); + } + + public BigInteger getId() { return id; } @@ -21,8 +30,7 @@ public long getId() { org.stellar.sdk.xdr.Memo toXdr() { org.stellar.sdk.xdr.Memo memo = new org.stellar.sdk.xdr.Memo(); memo.setDiscriminant(MemoType.MEMO_ID); - Uint64 idXdr = new Uint64(); - idXdr.setUint64(id); + Uint64 idXdr = new Uint64(new XdrUnsignedHyperInteger(id)); memo.setId(idXdr); return memo; } @@ -37,11 +45,11 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; MemoId memoId = (MemoId) o; - return id == memoId.id; + return Objects.equal(id, memoId.id); } @Override public String toString() { - return UnsignedLongs.toString(this.id); + return id.toString(); } } diff --git a/src/main/java/org/stellar/sdk/Predicate.java b/src/main/java/org/stellar/sdk/Predicate.java index 4928061c2..3875228ee 100644 --- a/src/main/java/org/stellar/sdk/Predicate.java +++ b/src/main/java/org/stellar/sdk/Predicate.java @@ -2,6 +2,7 @@ import com.google.common.base.Objects; import com.google.common.collect.Lists; +import java.math.BigInteger; import java.util.List; import org.stellar.sdk.xdr.ClaimPredicate; import org.stellar.sdk.xdr.ClaimPredicateType; @@ -9,6 +10,7 @@ import org.stellar.sdk.xdr.Int64; import org.stellar.sdk.xdr.TimePoint; import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; import org.threeten.bp.Instant; public abstract class Predicate { @@ -186,15 +188,38 @@ public AbsBefore(TimePoint timePoint) { } public AbsBefore(long epochSeconds) { - this(new TimePoint(new Uint64(epochSeconds))); + this(new TimePoint(new Uint64(new XdrUnsignedHyperInteger(epochSeconds)))); } - public long getTimestampSeconds() { - return timePoint.getTimePoint().getUint64(); + public AbsBefore(BigInteger epochSeconds) { + this(new TimePoint(new Uint64(new XdrUnsignedHyperInteger(epochSeconds)))); } + /** + * Gets the Predicate epoch in seconds. + * + * @return BigInteger the predicate epoch in seconds + */ + public BigInteger getTimestampSeconds() { + return timePoint.getTimePoint().getUint64().getNumber(); + } + + /** + * Gets the java date representation of a Predicate. If the Predicate specifies an epoch larger + * than 31556889864403199, it will coerce to {@link Instant#MAX} instead as no greater value can + * be represented. + * + *

If you want to get the real epoch, use {@link #getTimestampSeconds()} instead. + * + * @return Instant the java date representation of the predicate + */ public Instant getDate() { - return Instant.ofEpochSecond(timePoint.getTimePoint().getUint64()); + Instant instantMax = Instant.MAX; + if (getTimestampSeconds().compareTo(BigInteger.valueOf(instantMax.getEpochSecond())) > 0) { + return instantMax; + } + + return Instant.ofEpochSecond(timePoint.getTimePoint().getUint64().getNumber().longValue()); } @Override @@ -214,7 +239,7 @@ public int hashCode() { public ClaimPredicate toXdr() { org.stellar.sdk.xdr.ClaimPredicate xdr = new org.stellar.sdk.xdr.ClaimPredicate(); xdr.setDiscriminant(ClaimPredicateType.CLAIM_PREDICATE_BEFORE_ABSOLUTE_TIME); - xdr.setAbsBefore(new Int64(timePoint.getTimePoint().getUint64())); + xdr.setAbsBefore(new Int64(timePoint.getTimePoint().getUint64().getNumber().longValue())); return xdr; } } @@ -228,11 +253,11 @@ public RelBefore(Duration secondsSinceClose) { } public RelBefore(long secondsSinceClose) { - this(new Duration(new Uint64(secondsSinceClose))); + this(new Duration(new Uint64(new XdrUnsignedHyperInteger(secondsSinceClose)))); } public long getSecondsSinceClose() { - return duration.getDuration().getUint64(); + return duration.getDuration().getUint64().getNumber().longValue(); } @Override @@ -252,7 +277,7 @@ public int hashCode() { public ClaimPredicate toXdr() { org.stellar.sdk.xdr.ClaimPredicate xdr = new org.stellar.sdk.xdr.ClaimPredicate(); xdr.setDiscriminant(ClaimPredicateType.CLAIM_PREDICATE_BEFORE_RELATIVE_TIME); - xdr.setRelBefore(new Int64(duration.getDuration().getUint64())); + xdr.setRelBefore(new Int64(duration.getDuration().getUint64().getNumber().longValue())); return xdr; } } diff --git a/src/main/java/org/stellar/sdk/Sep10Challenge.java b/src/main/java/org/stellar/sdk/Sep10Challenge.java index 567df3de3..be86cd019 100644 --- a/src/main/java/org/stellar/sdk/Sep10Challenge.java +++ b/src/main/java/org/stellar/sdk/Sep10Challenge.java @@ -6,6 +6,7 @@ import com.google.common.collect.Multimap; import com.google.common.io.BaseEncoding; import java.io.IOException; +import java.math.BigInteger; import java.security.SecureRandom; import java.util.Arrays; import java.util.Collections; @@ -18,7 +19,7 @@ import org.stellar.sdk.xdr.SignatureHint; public class Sep10Challenge { - static final int GRACE_PERIOD_SECONDS = 5 * 60; + static final BigInteger GRACE_PERIOD_SECONDS = BigInteger.valueOf(5 * 60); static final String CLIENT_DOMAIN_DATA_NAME = "client_domain"; private static final String HOME_DOMAIN_MANAGER_DATA_NAME_FLAG = "auth"; private static final String WEB_AUTH_DOMAIN_MANAGER_DATA_NAME = "web_auth_domain"; @@ -247,14 +248,15 @@ public static ChallengeTransaction readChallengeTransaction( throw new InvalidSep10ChallengeException("only memo type `id` is supported"); } - long maxTime = transaction.getTimeBounds().getMaxTime(); - long minTime = transaction.getTimeBounds().getMinTime(); - if (maxTime == 0L) { + BigInteger maxTime = transaction.getTimeBounds().getMaxTime(); + BigInteger minTime = transaction.getTimeBounds().getMinTime(); + if (maxTime.equals(BigInteger.ZERO)) { throw new InvalidSep10ChallengeException("Transaction requires non-infinite timebounds."); } - long currentTime = System.currentTimeMillis() / 1000L; - if ((currentTime + GRACE_PERIOD_SECONDS) < minTime || currentTime > maxTime) { + BigInteger currentTime = BigInteger.valueOf(System.currentTimeMillis() / 1000L); + if (currentTime.add(GRACE_PERIOD_SECONDS).compareTo(minTime) < 0 + || currentTime.compareTo(maxTime) > 0) { throw new InvalidSep10ChallengeException( "Transaction is not within range of the specified timebounds."); } diff --git a/src/main/java/org/stellar/sdk/SetOptionsOperation.java b/src/main/java/org/stellar/sdk/SetOptionsOperation.java index b57960d84..0a3e94927 100644 --- a/src/main/java/org/stellar/sdk/SetOptionsOperation.java +++ b/src/main/java/org/stellar/sdk/SetOptionsOperation.java @@ -131,32 +131,32 @@ org.stellar.sdk.xdr.Operation.OperationBody toOperationBody(AccountConverter acc } if (clearFlags != null) { Uint32 clearFlags = new Uint32(); - clearFlags.setUint32(this.clearFlags); + clearFlags.setUint32(new XdrUnsignedInteger(this.clearFlags)); op.setClearFlags(clearFlags); } if (setFlags != null) { Uint32 setFlags = new Uint32(); - setFlags.setUint32(this.setFlags); + setFlags.setUint32(new XdrUnsignedInteger(this.setFlags)); op.setSetFlags(setFlags); } if (masterKeyWeight != null) { Uint32 uint32 = new Uint32(); - uint32.setUint32(masterKeyWeight); + uint32.setUint32(new XdrUnsignedInteger(masterKeyWeight)); op.setMasterWeight(uint32); } if (lowThreshold != null) { Uint32 uint32 = new Uint32(); - uint32.setUint32(lowThreshold); + uint32.setUint32(new XdrUnsignedInteger(lowThreshold)); op.setLowThreshold(uint32); } if (mediumThreshold != null) { Uint32 uint32 = new Uint32(); - uint32.setUint32(mediumThreshold); + uint32.setUint32(new XdrUnsignedInteger(mediumThreshold)); op.setMedThreshold(uint32); } if (highThreshold != null) { Uint32 uint32 = new Uint32(); - uint32.setUint32(highThreshold); + uint32.setUint32(new XdrUnsignedInteger(highThreshold)); op.setHighThreshold(uint32); } if (homeDomain != null) { @@ -167,7 +167,7 @@ org.stellar.sdk.xdr.Operation.OperationBody toOperationBody(AccountConverter acc if (signer != null) { org.stellar.sdk.xdr.Signer signer = new org.stellar.sdk.xdr.Signer(); Uint32 weight = new Uint32(); - weight.setUint32(signerWeight & 0xFF); + weight.setUint32(new XdrUnsignedInteger(signerWeight & 0xFF)); signer.setKey(this.signer); signer.setWeight(weight); op.setSigner(signer); @@ -203,29 +203,29 @@ public static class Builder { inflationDestination = StrKey.encodeStellarAccountId(op.getInflationDest()); } if (op.getClearFlags() != null) { - clearFlags = op.getClearFlags().getUint32(); + clearFlags = op.getClearFlags().getUint32().getNumber().intValue(); } if (op.getSetFlags() != null) { - setFlags = op.getSetFlags().getUint32(); + setFlags = op.getSetFlags().getUint32().getNumber().intValue(); } if (op.getMasterWeight() != null) { - masterKeyWeight = op.getMasterWeight().getUint32(); + masterKeyWeight = op.getMasterWeight().getUint32().getNumber().intValue(); } if (op.getLowThreshold() != null) { - lowThreshold = op.getLowThreshold().getUint32(); + lowThreshold = op.getLowThreshold().getUint32().getNumber().intValue(); } if (op.getMedThreshold() != null) { - mediumThreshold = op.getMedThreshold().getUint32(); + mediumThreshold = op.getMedThreshold().getUint32().getNumber().intValue(); } if (op.getHighThreshold() != null) { - highThreshold = op.getHighThreshold().getUint32(); + highThreshold = op.getHighThreshold().getUint32().getNumber().intValue(); } if (op.getHomeDomain() != null) { homeDomain = op.getHomeDomain().getString32().toString(); } if (op.getSigner() != null) { signer = op.getSigner().getKey(); - signerWeight = op.getSigner().getWeight().getUint32() & 0xFF; + signerWeight = op.getSigner().getWeight().getUint32().getNumber().intValue() & 0xFF; } } diff --git a/src/main/java/org/stellar/sdk/SetTrustlineFlagsOperation.java b/src/main/java/org/stellar/sdk/SetTrustlineFlagsOperation.java index baad5b619..ba959f18e 100644 --- a/src/main/java/org/stellar/sdk/SetTrustlineFlagsOperation.java +++ b/src/main/java/org/stellar/sdk/SetTrustlineFlagsOperation.java @@ -53,7 +53,7 @@ private static Uint32 bitwiseOr(EnumSet set) { v |= f.getValue(); } Uint32 combined = new Uint32(); - combined.setUint32(v); + combined.setUint32(new XdrUnsignedInteger(v)); return combined; } @@ -89,8 +89,8 @@ public static class Builder { Builder(SetTrustLineFlagsOp op) { trustor = StrKey.encodeStellarAccountId(op.getTrustor()); asset = Util.assertNonNativeAsset(Asset.fromXdr(op.getAsset())); - clearFlags = flagSetFromInt(op.getClearFlags().getUint32()); - setFlags = flagSetFromInt(op.getSetFlags().getUint32()); + clearFlags = flagSetFromInt(op.getClearFlags().getUint32().getNumber().intValue()); + setFlags = flagSetFromInt(op.getSetFlags().getUint32().getNumber().intValue()); } private static EnumSet flagSetFromInt(int x) { diff --git a/src/main/java/org/stellar/sdk/StrKey.java b/src/main/java/org/stellar/sdk/StrKey.java index 74041aef2..c6ab224f6 100644 --- a/src/main/java/org/stellar/sdk/StrKey.java +++ b/src/main/java/org/stellar/sdk/StrKey.java @@ -3,7 +3,6 @@ import com.google.common.base.Optional; import com.google.common.io.BaseEncoding; import com.google.common.primitives.Bytes; -import com.google.common.primitives.Longs; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.CharArrayWriter; @@ -20,6 +19,7 @@ import org.stellar.sdk.xdr.Uint64; import org.stellar.sdk.xdr.XdrDataInputStream; import org.stellar.sdk.xdr.XdrDataOutputStream; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; class StrKey { @@ -66,11 +66,7 @@ public static String encodeStellarMuxedAccount(MuxedAccount muxedAccount) { switch (muxedAccount.getDiscriminant()) { case KEY_TYPE_MUXED_ED25519: return String.valueOf( - encodeCheck( - VersionByte.MUXED, - Bytes.concat( - muxedAccount.getMed25519().getEd25519().getUint256(), - Longs.toByteArray(muxedAccount.getMed25519().getId().getUint64())))); + encodeCheck(VersionByte.MUXED, getMuxedEd25519AccountBytes(muxedAccount))); case KEY_TYPE_ED25519: return String.valueOf( encodeCheck(VersionByte.ACCOUNT_ID, muxedAccount.getEd25519().getUint256())); @@ -137,7 +133,7 @@ public static MuxedAccount encodeToXDRMuxedAccount(String data) { MuxedAccount.MuxedAccountMed25519 med = new MuxedAccount.MuxedAccountMed25519(); try { med.setEd25519(Uint256.decode(input)); - med.setId(Uint64.decode(input)); + med.setId(new Uint64(XdrUnsignedHyperInteger.decode(input))); } catch (IOException e) { throw new IllegalArgumentException("invalid address: " + data, e); } @@ -398,4 +394,15 @@ public int getValue() { return value; } } + + private static byte[] getMuxedEd25519AccountBytes(MuxedAccount muxedAccount) { + byte[] accountBytes = muxedAccount.getMed25519().getEd25519().getUint256(); + byte[] idBytes = muxedAccount.getMed25519().getId().getUint64().getNumber().toByteArray(); + byte[] idPaddedBytes = new byte[8]; + int idNumBytesToCopy = Math.min(idBytes.length, 8); + int idCopyStartIndex = idBytes.length - idNumBytesToCopy; + System.arraycopy( + idBytes, idCopyStartIndex, idPaddedBytes, 8 - idNumBytesToCopy, idNumBytesToCopy); + return Bytes.concat(accountBytes, idPaddedBytes); + } } diff --git a/src/main/java/org/stellar/sdk/TimeBounds.java b/src/main/java/org/stellar/sdk/TimeBounds.java index 7dbd9383f..b797c7df6 100644 --- a/src/main/java/org/stellar/sdk/TimeBounds.java +++ b/src/main/java/org/stellar/sdk/TimeBounds.java @@ -1,8 +1,10 @@ package org.stellar.sdk; import com.google.common.base.Objects; +import java.math.BigInteger; import org.stellar.sdk.xdr.TimePoint; import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; /** * TimeBounds represents the time interval that a transaction is valid. @@ -10,30 +12,41 @@ * @see Transaction */ public final class TimeBounds { - private final long mMinTime; - private final long mMaxTime; + private final BigInteger mMinTime; + private final BigInteger mMaxTime; /** * @param minTime 64bit Unix timestamp * @param maxTime 64bit Unix timestamp */ - public TimeBounds(long minTime, long maxTime) { - if (minTime < 0) { - throw new IllegalArgumentException("minTime cannot be negative"); + public TimeBounds(BigInteger minTime, BigInteger maxTime) { + if (minTime.compareTo(XdrUnsignedHyperInteger.MIN_VALUE) < 0 + || minTime.compareTo(XdrUnsignedHyperInteger.MAX_VALUE) > 0) { + throw new IllegalArgumentException("minTime must be between 0 and 2^64-1"); } - if (maxTime < 0) { - throw new IllegalArgumentException("maxTime cannot be negative"); + if (maxTime.compareTo(XdrUnsignedHyperInteger.MIN_VALUE) < 0 + || maxTime.compareTo(XdrUnsignedHyperInteger.MAX_VALUE) > 0) { + throw new IllegalArgumentException("maxTime must be between 0 and 2^64-1"); } - if (maxTime != TransactionPreconditions.TIMEOUT_INFINITE && minTime > maxTime) { - throw new IllegalArgumentException("minTime must be >= maxTime"); + if (!TransactionPreconditions.TIMEOUT_INFINITE.equals(maxTime) + && minTime.compareTo(maxTime) > 0) { + throw new IllegalArgumentException("minTime must be <= maxTime"); } mMinTime = minTime; mMaxTime = maxTime; } + /** + * @param minTime 64bit Unix timestamp + * @param maxTime 64bit Unix timestamp + */ + public TimeBounds(long minTime, long maxTime) { + this(BigInteger.valueOf(minTime), BigInteger.valueOf(maxTime)); + } + /** * A factory method that sets maxTime to the specified second from now. * @@ -46,11 +59,11 @@ public static TimeBounds expiresAfter(long timeout) { return new TimeBounds(0, endTime); } - public long getMinTime() { + public BigInteger getMinTime() { return mMinTime; } - public long getMaxTime() { + public BigInteger getMaxTime() { return mMaxTime; } @@ -60,8 +73,8 @@ public static TimeBounds fromXdr(org.stellar.sdk.xdr.TimeBounds timeBounds) { } return new TimeBounds( - timeBounds.getMinTime().getTimePoint().getUint64(), - timeBounds.getMaxTime().getTimePoint().getUint64()); + timeBounds.getMinTime().getTimePoint().getUint64().getNumber(), + timeBounds.getMaxTime().getTimePoint().getUint64().getNumber()); } public org.stellar.sdk.xdr.TimeBounds toXdr() { @@ -70,8 +83,8 @@ public org.stellar.sdk.xdr.TimeBounds toXdr() { TimePoint maxTime = new TimePoint(); Uint64 minTimeTemp = new Uint64(); Uint64 maxTimeTemp = new Uint64(); - minTimeTemp.setUint64(mMinTime); - maxTimeTemp.setUint64(mMaxTime); + minTimeTemp.setUint64(new XdrUnsignedHyperInteger(mMinTime)); + maxTimeTemp.setUint64(new XdrUnsignedHyperInteger(mMaxTime)); minTime.setTimePoint(minTimeTemp); maxTime.setTimePoint(maxTimeTemp); timeBounds.setMinTime(minTime); @@ -88,7 +101,8 @@ public boolean equals(Object o) { return false; } TimeBounds that = (TimeBounds) o; - return mMinTime == that.mMinTime && mMaxTime == that.mMaxTime; + return Objects.equal(this.mMaxTime, that.mMaxTime) + && Objects.equal(this.mMinTime, that.mMinTime); } @Override diff --git a/src/main/java/org/stellar/sdk/Transaction.java b/src/main/java/org/stellar/sdk/Transaction.java index 430bef521..2bc6df2ad 100644 --- a/src/main/java/org/stellar/sdk/Transaction.java +++ b/src/main/java/org/stellar/sdk/Transaction.java @@ -24,6 +24,7 @@ import org.stellar.sdk.xdr.TransactionV1Envelope; import org.stellar.sdk.xdr.Uint32; import org.stellar.sdk.xdr.XdrDataOutputStream; +import org.stellar.sdk.xdr.XdrUnsignedInteger; /** * Represents mOperations; - private Integer mBaseFee; + private Long mBaseFee; private Network mNetwork; private TransactionPreconditions mPreconditions; private SorobanTransactionData mSorobanData; @@ -155,25 +157,25 @@ public TransactionBuilder addTimeBounds(TimeBounds timeBounds) { * @deprecated this method will be removed in upcoming releases, use addPreconditions() * with TimeBound set instead for more control over preconditions. */ - public TransactionBuilder setTimeout(long timeout) { + public TransactionBuilder setTimeout(BigInteger timeout) { if (mPreconditions.getTimeBounds() != null - && mPreconditions.getTimeBounds().getMaxTime() != TIMEOUT_INFINITE) { + && !TIMEOUT_INFINITE.equals(mPreconditions.getTimeBounds().getMaxTime())) { throw new RuntimeException( "TimeBounds.max_time has been already set - setting timeout would overwrite it."); } - if (timeout < 0) { + if (timeout.compareTo(BigInteger.ZERO) < 0) { throw new RuntimeException("timeout cannot be negative"); } - long timeoutTimestamp = - timeout != TIMEOUT_INFINITE - ? System.currentTimeMillis() / 1000L + timeout + BigInteger timeoutTimestamp = + !TIMEOUT_INFINITE.equals(timeout) + ? timeout.add(BigInteger.valueOf(System.currentTimeMillis() / 1000L)) : TIMEOUT_INFINITE; TransactionPreconditionsBuilder preconditionsBuilder = mPreconditions.toBuilder(); if (mPreconditions.getTimeBounds() == null) { - preconditionsBuilder.timeBounds(new TimeBounds(0, timeoutTimestamp)); + preconditionsBuilder.timeBounds(new TimeBounds(BigInteger.ZERO, timeoutTimestamp)); } else { preconditionsBuilder.timeBounds( new TimeBounds(mPreconditions.getTimeBounds().getMinTime(), timeoutTimestamp)); @@ -182,7 +184,19 @@ public TransactionBuilder setTimeout(long timeout) { return this; } - public TransactionBuilder setBaseFee(int baseFee) { + /** + * An alias for {@link #setTimeout(BigInteger)} with timeout in seconds. + * + * @param timeout Timeout in seconds. + * @return updated Builder + * @deprecated this method will be removed in upcoming releases, use addPreconditions() + * with TimeBound set instead for more control over preconditions. + */ + public TransactionBuilder setTimeout(long timeout) { + return setTimeout(BigInteger.valueOf(timeout)); + } + + public TransactionBuilder setBaseFee(long baseFee) { if (baseFee < AbstractTransaction.MIN_BASE_FEE) { throw new IllegalArgumentException( "baseFee cannot be smaller than the BASE_FEE (" @@ -240,10 +254,11 @@ public Long apply(TransactionBuilderAccount sourceAccount) { } }; + @Deprecated public static org.stellar.sdk.xdr.TimeBounds buildTimeBounds(long minTime, long maxTime) { return new org.stellar.sdk.xdr.TimeBounds.Builder() - .minTime(new TimePoint(new Uint64(minTime))) - .maxTime(new TimePoint(new Uint64(maxTime))) + .minTime(new TimePoint(new Uint64(new XdrUnsignedHyperInteger(minTime)))) + .maxTime(new TimePoint(new Uint64(new XdrUnsignedHyperInteger(maxTime)))) .build(); } diff --git a/src/main/java/org/stellar/sdk/TransactionPreconditions.java b/src/main/java/org/stellar/sdk/TransactionPreconditions.java index 6d8b37b8c..e25b7ab4e 100644 --- a/src/main/java/org/stellar/sdk/TransactionPreconditions.java +++ b/src/main/java/org/stellar/sdk/TransactionPreconditions.java @@ -1,5 +1,6 @@ package org.stellar.sdk; +import java.math.BigInteger; import java.util.Arrays; import java.util.List; import lombok.Builder; @@ -15,6 +16,8 @@ import org.stellar.sdk.xdr.SignerKey; import org.stellar.sdk.xdr.Uint32; import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; +import org.stellar.sdk.xdr.XdrUnsignedInteger; @Value @Builder(toBuilder = true) @@ -24,12 +27,12 @@ */ public class TransactionPreconditions { public static final long MAX_EXTRA_SIGNERS_COUNT = 2; - public static final long TIMEOUT_INFINITE = 0; + public static final BigInteger TIMEOUT_INFINITE = BigInteger.ZERO; LedgerBounds ledgerBounds; - Long minSeqNumber; - long minSeqAge; - int minSeqLedgerGap; + Long minSeqNumber; // int64 + @Builder.Default BigInteger minSeqAge = BigInteger.ZERO; // uint64 + long minSeqLedgerGap; // uint32 @Singular @NonNull List extraSigners; TimeBounds timeBounds; @@ -48,7 +51,7 @@ public void isValid() { public boolean hasV2() { return (ledgerBounds != null || (minSeqLedgerGap > 0) - || (minSeqAge > 0) + || (minSeqAge.compareTo(BigInteger.ZERO) > 0) || minSeqNumber != null || !extraSigners.isEmpty()); } @@ -60,15 +63,28 @@ public static TransactionPreconditions fromXdr(Preconditions preconditions) { if (preconditions.getV2().getTimeBounds() != null) { builder.timeBounds( new TimeBounds( - preconditions.getV2().getTimeBounds().getMinTime().getTimePoint().getUint64(), - preconditions.getV2().getTimeBounds().getMaxTime().getTimePoint().getUint64())); + preconditions + .getV2() + .getTimeBounds() + .getMinTime() + .getTimePoint() + .getUint64() + .getNumber(), + preconditions + .getV2() + .getTimeBounds() + .getMaxTime() + .getTimePoint() + .getUint64() + .getNumber())); } if (preconditions.getV2().getExtraSigners() != null && preconditions.getV2().getExtraSigners().length > 0) { builder.extraSigners(Arrays.asList(preconditions.getV2().getExtraSigners())); } if (preconditions.getV2().getMinSeqAge() != null) { - builder.minSeqAge(preconditions.getV2().getMinSeqAge().getDuration().getUint64()); + builder.minSeqAge( + preconditions.getV2().getMinSeqAge().getDuration().getUint64().getNumber()); } if (preconditions.getV2().getLedgerBounds() != null) { builder.ledgerBounds(LedgerBounds.fromXdr(preconditions.getV2().getLedgerBounds())); @@ -77,14 +93,15 @@ public static TransactionPreconditions fromXdr(Preconditions preconditions) { builder.minSeqNumber(preconditions.getV2().getMinSeqNum().getSequenceNumber().getInt64()); } if (preconditions.getV2().getMinSeqLedgerGap() != null) { - builder.minSeqLedgerGap(preconditions.getV2().getMinSeqLedgerGap().getUint32()); + builder.minSeqLedgerGap( + preconditions.getV2().getMinSeqLedgerGap().getUint32().getNumber().intValue()); } } else { if (preconditions.getTimeBounds() != null) { builder.timeBounds( new TimeBounds( - preconditions.getTimeBounds().getMinTime().getTimePoint().getUint64(), - preconditions.getTimeBounds().getMaxTime().getTimePoint().getUint64())); + preconditions.getTimeBounds().getMinTime().getTimePoint().getUint64().getNumber(), + preconditions.getTimeBounds().getMaxTime().getTimePoint().getUint64().getNumber())); } } @@ -99,20 +116,20 @@ public Preconditions toXdr() { PreconditionsV2.Builder v2Builder = new PreconditionsV2.Builder(); v2Builder.extraSigners(extraSigners.toArray(new SignerKey[] {})); - v2Builder.minSeqAge(new Duration(new Uint64(minSeqAge))); + v2Builder.minSeqAge(new Duration(new Uint64(new XdrUnsignedHyperInteger(minSeqAge)))); if (ledgerBounds != null) { v2Builder.ledgerBounds( new org.stellar.sdk.xdr.LedgerBounds.Builder() - .minLedger(new Uint32(ledgerBounds.getMinLedger())) - .maxLedger(new Uint32(ledgerBounds.getMaxLedger())) + .minLedger(new Uint32(new XdrUnsignedInteger(ledgerBounds.getMinLedger()))) + .maxLedger(new Uint32(new XdrUnsignedInteger(ledgerBounds.getMaxLedger()))) .build()); } if (minSeqNumber != null) { v2Builder.minSeqNum(new SequenceNumber(new Int64(minSeqNumber))); } - v2Builder.minSeqLedgerGap(new Uint32(minSeqLedgerGap)); + v2Builder.minSeqLedgerGap(new Uint32(new XdrUnsignedInteger(minSeqLedgerGap))); if (timeBounds != null) { v2Builder.timeBounds(timeBounds.toXdr()); diff --git a/src/main/java/org/stellar/sdk/responses/PredicateDeserializer.java b/src/main/java/org/stellar/sdk/responses/PredicateDeserializer.java index 103bb395f..27fe89086 100644 --- a/src/main/java/org/stellar/sdk/responses/PredicateDeserializer.java +++ b/src/main/java/org/stellar/sdk/responses/PredicateDeserializer.java @@ -8,6 +8,7 @@ import org.stellar.sdk.xdr.Duration; import org.stellar.sdk.xdr.TimePoint; import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; import org.threeten.bp.Instant; public class PredicateDeserializer implements JsonDeserializer { @@ -44,15 +45,21 @@ public Predicate deserialize(JsonElement json, Type typeOfT, JsonDeserialization // abs_before date string if (obj.has("abs_before_epoch")) { return new Predicate.AbsBefore( - new TimePoint(new Uint64(obj.get("abs_before_epoch").getAsLong()))); + new TimePoint( + new Uint64( + new XdrUnsignedHyperInteger(obj.get("abs_before_epoch").getAsBigInteger())))); } else if (obj.has("abs_before")) { String formattedDate = obj.get("abs_before").getAsString(); return new Predicate.AbsBefore( - new TimePoint(new Uint64(Instant.parse(formattedDate).getEpochSecond()))); + new TimePoint( + new Uint64( + new XdrUnsignedHyperInteger(Instant.parse(formattedDate).getEpochSecond())))); } if (obj.has("rel_before")) { - return new Predicate.RelBefore(new Duration(new Uint64(obj.get("rel_before").getAsLong()))); + return new Predicate.RelBefore( + new Duration( + new Uint64(new XdrUnsignedHyperInteger(obj.get("rel_before").getAsBigInteger())))); } throw new IllegalArgumentException("Unsupported predicate: " + json.toString()); diff --git a/src/main/java/org/stellar/sdk/responses/TransactionDeserializer.java b/src/main/java/org/stellar/sdk/responses/TransactionDeserializer.java index 67e8e104a..01ceae628 100644 --- a/src/main/java/org/stellar/sdk/responses/TransactionDeserializer.java +++ b/src/main/java/org/stellar/sdk/responses/TransactionDeserializer.java @@ -5,6 +5,7 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.lang.reflect.Type; +import java.math.BigInteger; import org.stellar.sdk.Memo; import org.stellar.sdk.xdr.TransactionEnvelope; import org.stellar.sdk.xdr.XdrDataInputStream; @@ -81,7 +82,7 @@ public TransactionResponse deserialize( String memoValue = json.getAsJsonObject().get("memo").getAsString(); BaseEncoding base64Encoding = BaseEncoding.base64(); if (memoType.equals("id")) { - memo = Memo.id(Long.parseUnsignedLong(memoValue)); + memo = Memo.id(new BigInteger(memoValue)); } else if (memoType.equals("hash")) { memo = Memo.hash(base64Encoding.decode(memoValue)); } else if (memoType.equals("return")) { diff --git a/src/main/java/org/stellar/sdk/xdr/AuthenticatedMessage.java b/src/main/java/org/stellar/sdk/xdr/AuthenticatedMessage.java index f37fab5f8..7289d31e0 100644 --- a/src/main/java/org/stellar/sdk/xdr/AuthenticatedMessage.java +++ b/src/main/java/org/stellar/sdk/xdr/AuthenticatedMessage.java @@ -72,8 +72,9 @@ public static void encode( throws IOException { // Xdrgen::AST::Identifier // Uint32 - stream.writeInt(encodedAuthenticatedMessage.getDiscriminant().getUint32()); - switch (encodedAuthenticatedMessage.getDiscriminant().getUint32()) { + stream.writeInt( + encodedAuthenticatedMessage.getDiscriminant().getUint32().getNumber().intValue()); + switch (encodedAuthenticatedMessage.getDiscriminant().getUint32().getNumber().intValue()) { case 0: AuthenticatedMessageV0.encode(stream, encodedAuthenticatedMessage.v0); break; @@ -88,7 +89,7 @@ public static AuthenticatedMessage decode(XdrDataInputStream stream) throws IOEx AuthenticatedMessage decodedAuthenticatedMessage = new AuthenticatedMessage(); Uint32 discriminant = Uint32.decode(stream); decodedAuthenticatedMessage.setDiscriminant(discriminant); - switch (decodedAuthenticatedMessage.getDiscriminant().getUint32()) { + switch (decodedAuthenticatedMessage.getDiscriminant().getUint32().getNumber().intValue()) { case 0: decodedAuthenticatedMessage.v0 = AuthenticatedMessageV0.decode(stream); break; diff --git a/src/main/java/org/stellar/sdk/xdr/Uint32.java b/src/main/java/org/stellar/sdk/xdr/Uint32.java index 57f564457..8c66f883f 100644 --- a/src/main/java/org/stellar/sdk/xdr/Uint32.java +++ b/src/main/java/org/stellar/sdk/xdr/Uint32.java @@ -14,24 +14,24 @@ // =========================================================================== public class Uint32 implements XdrElement { - private Integer uint32; + private XdrUnsignedInteger uint32; public Uint32() {} - public Uint32(Integer uint32) { + public Uint32(XdrUnsignedInteger uint32) { this.uint32 = uint32; } - public Integer getUint32() { + public XdrUnsignedInteger getUint32() { return this.uint32; } - public void setUint32(Integer value) { + public void setUint32(XdrUnsignedInteger value) { this.uint32 = value; } public static void encode(XdrDataOutputStream stream, Uint32 encodedUint32) throws IOException { - stream.writeInt(encodedUint32.uint32); + encodedUint32.uint32.encode(stream); } public void encode(XdrDataOutputStream stream) throws IOException { @@ -40,7 +40,7 @@ public void encode(XdrDataOutputStream stream) throws IOException { public static Uint32 decode(XdrDataInputStream stream) throws IOException { Uint32 decodedUint32 = new Uint32(); - decodedUint32.uint32 = stream.readInt(); + decodedUint32.uint32 = XdrUnsignedInteger.decode(stream); return decodedUint32; } diff --git a/src/main/java/org/stellar/sdk/xdr/Uint64.java b/src/main/java/org/stellar/sdk/xdr/Uint64.java index b0ee52e74..819c554d6 100644 --- a/src/main/java/org/stellar/sdk/xdr/Uint64.java +++ b/src/main/java/org/stellar/sdk/xdr/Uint64.java @@ -14,24 +14,24 @@ // =========================================================================== public class Uint64 implements XdrElement { - private Long uint64; + private XdrUnsignedHyperInteger uint64; public Uint64() {} - public Uint64(Long uint64) { + public Uint64(XdrUnsignedHyperInteger uint64) { this.uint64 = uint64; } - public Long getUint64() { + public XdrUnsignedHyperInteger getUint64() { return this.uint64; } - public void setUint64(Long value) { + public void setUint64(XdrUnsignedHyperInteger value) { this.uint64 = value; } public static void encode(XdrDataOutputStream stream, Uint64 encodedUint64) throws IOException { - stream.writeLong(encodedUint64.uint64); + encodedUint64.uint64.encode(stream); } public void encode(XdrDataOutputStream stream) throws IOException { @@ -40,7 +40,7 @@ public void encode(XdrDataOutputStream stream) throws IOException { public static Uint64 decode(XdrDataInputStream stream) throws IOException { Uint64 decodedUint64 = new Uint64(); - decodedUint64.uint64 = stream.readLong(); + decodedUint64.uint64 = XdrUnsignedHyperInteger.decode(stream); return decodedUint64; } diff --git a/src/main/java/org/stellar/sdk/xdr/XdrUnsignedHyperInteger.java b/src/main/java/org/stellar/sdk/xdr/XdrUnsignedHyperInteger.java new file mode 100644 index 000000000..8ef477129 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/XdrUnsignedHyperInteger.java @@ -0,0 +1,77 @@ +package org.stellar.sdk.xdr; + +import com.google.common.base.Objects; +import java.io.IOException; +import java.math.BigInteger; + +/** + * Represents XDR Unsigned Hyper Integer. + * + * @see XDR: External Data + * Representation Standard + */ +public class XdrUnsignedHyperInteger implements XdrElement { + public static final BigInteger MAX_VALUE = new BigInteger("18446744073709551615"); + public static final BigInteger MIN_VALUE = BigInteger.ZERO; + private final BigInteger number; + + public XdrUnsignedHyperInteger(BigInteger number) { + if (number.compareTo(MIN_VALUE) < 0 || number.compareTo(MAX_VALUE) > 0) { + throw new IllegalArgumentException("number must be between 0 and 2^64 - 1 inclusive"); + } + this.number = number; + } + + public XdrUnsignedHyperInteger(Long number) { + if (number < 0) { + throw new IllegalArgumentException( + "number must be greater than or equal to 0 if you want to construct it from Long"); + } + this.number = BigInteger.valueOf(number); + } + + @Override + public void encode(XdrDataOutputStream stream) throws IOException { + stream.write(getBytes()); + } + + public static XdrUnsignedHyperInteger decode(XdrDataInputStream stream) throws IOException { + byte[] bytes = new byte[8]; + stream.readFully(bytes); + BigInteger uint64 = new BigInteger(1, bytes); + return new XdrUnsignedHyperInteger(uint64); + } + + private byte[] getBytes() { + byte[] bytes = number.toByteArray(); + byte[] paddedBytes = new byte[8]; + + int numBytesToCopy = Math.min(bytes.length, 8); + int copyStartIndex = bytes.length - numBytesToCopy; + System.arraycopy(bytes, copyStartIndex, paddedBytes, 8 - numBytesToCopy, numBytesToCopy); + return paddedBytes; + } + + public BigInteger getNumber() { + return number; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.number); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof XdrUnsignedHyperInteger)) { + return false; + } + + XdrUnsignedHyperInteger other = (XdrUnsignedHyperInteger) object; + return Objects.equal(this.number, other.number); + } + + public String toString() { + return "XdrUnsignedInteger(number=" + this.getNumber() + ")"; + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/XdrUnsignedInteger.java b/src/main/java/org/stellar/sdk/xdr/XdrUnsignedInteger.java new file mode 100644 index 000000000..b717ccd6e --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/XdrUnsignedInteger.java @@ -0,0 +1,65 @@ +package org.stellar.sdk.xdr; + +import com.google.common.base.Objects; +import java.io.IOException; + +/** + * Represents XDR Unsigned Integer. + * + * @see XDR: External Data + * Representation Standard + */ +public class XdrUnsignedInteger implements XdrElement { + public static final long MAX_VALUE = (1L << 32) - 1; + public static final long MIN_VALUE = 0; + private final Long number; + + public XdrUnsignedInteger(Long number) { + if (number < MIN_VALUE || number > MAX_VALUE) { + throw new IllegalArgumentException("number must be between 0 and 2^32 - 1 inclusive"); + } + this.number = number; + } + + public XdrUnsignedInteger(Integer number) { + if (number < 0) { + throw new IllegalArgumentException( + "number must be greater than or equal to 0 if you want to construct it from Integer"); + } + this.number = number.longValue(); + } + + public Long getNumber() { + return number; + } + + public static XdrUnsignedInteger decode(XdrDataInputStream stream) throws IOException { + int intValue = stream.readInt(); + long uint32Value = Integer.toUnsignedLong(intValue); + return new XdrUnsignedInteger(uint32Value); + } + + @Override + public void encode(XdrDataOutputStream stream) throws IOException { + stream.writeInt(number.intValue()); + } + + @Override + public int hashCode() { + return Objects.hashCode(this.number); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof XdrUnsignedInteger)) { + return false; + } + + XdrUnsignedInteger other = (XdrUnsignedInteger) object; + return Objects.equal(this.number, other.number); + } + + public String toString() { + return "XdrUnsignedInteger(number=" + this.getNumber() + ")"; + } +} diff --git a/src/test/java/org/stellar/sdk/BumpFootprintExpirationOperationTest.java b/src/test/java/org/stellar/sdk/BumpFootprintExpirationOperationTest.java index 21411c5df..1319103f9 100644 --- a/src/test/java/org/stellar/sdk/BumpFootprintExpirationOperationTest.java +++ b/src/test/java/org/stellar/sdk/BumpFootprintExpirationOperationTest.java @@ -12,10 +12,10 @@ public void testBuilderWithSource() { String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; BumpFootprintExpirationOperation op = BumpFootprintExpirationOperation.builder() - .ledgersToExpire(123) + .ledgersToExpire(123L) .sourceAccount(source) .build(); - assertEquals(Integer.valueOf(123), op.getLedgersToExpire()); + assertEquals(Long.valueOf(123), op.getLedgersToExpire()); assertEquals(source, op.getSourceAccount()); String expectXdr = "AAAAAQAAAAAk4TTtavBWsGnEN3KxHw4Ohwi22ZJHWi8hlamN5pm0TgAAABkAAAAAAAAAew=="; assertEquals(expectXdr, op.toXdrBase64()); @@ -24,8 +24,8 @@ public void testBuilderWithSource() { @Test public void testBuilderWithoutSource() { BumpFootprintExpirationOperation op = - BumpFootprintExpirationOperation.builder().ledgersToExpire(123).build(); - assertEquals(Integer.valueOf(123), op.getLedgersToExpire()); + BumpFootprintExpirationOperation.builder().ledgersToExpire(123L).build(); + assertEquals(Long.valueOf(123), op.getLedgersToExpire()); assertNull(op.getSourceAccount()); String expectXdr = "AAAAAAAAABkAAAAAAAAAew=="; assertEquals(expectXdr, op.toXdrBase64()); @@ -36,7 +36,7 @@ public void testFromXdr() { String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; BumpFootprintExpirationOperation originOp = BumpFootprintExpirationOperation.builder() - .ledgersToExpire(123) + .ledgersToExpire(123L) .sourceAccount(source) .build(); org.stellar.sdk.xdr.Operation xdrObject = originOp.toXdr(); @@ -49,12 +49,12 @@ public void testEquals() { String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; BumpFootprintExpirationOperation operation1 = BumpFootprintExpirationOperation.builder() - .ledgersToExpire(123) + .ledgersToExpire(123L) .sourceAccount(source) .build(); BumpFootprintExpirationOperation operation2 = BumpFootprintExpirationOperation.builder() - .ledgersToExpire(123) + .ledgersToExpire(123L) .sourceAccount(source) .build(); assertEquals(operation1, operation2); @@ -65,12 +65,12 @@ public void testNotEquals() { String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; BumpFootprintExpirationOperation operation1 = BumpFootprintExpirationOperation.builder() - .ledgersToExpire(123) + .ledgersToExpire(123L) .sourceAccount(source) .build(); BumpFootprintExpirationOperation operation2 = BumpFootprintExpirationOperation.builder() - .ledgersToExpire(124) + .ledgersToExpire(124L) .sourceAccount(source) .build(); Assert.assertNotEquals(operation1, operation2); @@ -81,18 +81,28 @@ public void testNotEqualsSource() { String source = "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW"; BumpFootprintExpirationOperation operation1 = BumpFootprintExpirationOperation.builder() - .ledgersToExpire(123) + .ledgersToExpire(123L) .sourceAccount(source) .build(); BumpFootprintExpirationOperation operation2 = - BumpFootprintExpirationOperation.builder().ledgersToExpire(123).build(); + BumpFootprintExpirationOperation.builder().ledgersToExpire(123L).build(); Assert.assertNotEquals(operation1, operation2); } @Test - public void testLedgersToExpireIsInvalidThrows() { + public void testLedgersToExpireIsInvalidThrowsLessThanZero() { try { - BumpFootprintExpirationOperation.builder().ledgersToExpire(-1).build(); + BumpFootprintExpirationOperation.builder().ledgersToExpire(-1L).build(); + Assert.fail(); + } catch (IllegalArgumentException e) { + Assert.assertEquals("ledgersToExpire isn't a ledger quantity (uint32)", e.getMessage()); + } + } + + @Test + public void testLedgersToExpireIsInvalidThrowsGreatThanMaxUint32() { + try { + BumpFootprintExpirationOperation.builder().ledgersToExpire(4294967296L).build(); Assert.fail(); } catch (IllegalArgumentException e) { Assert.assertEquals("ledgersToExpire isn't a ledger quantity (uint32)", e.getMessage()); diff --git a/src/test/java/org/stellar/sdk/ClaimableBalanceIdTest.java b/src/test/java/org/stellar/sdk/ClaimableBalanceIdTest.java index 361195308..d9484965c 100644 --- a/src/test/java/org/stellar/sdk/ClaimableBalanceIdTest.java +++ b/src/test/java/org/stellar/sdk/ClaimableBalanceIdTest.java @@ -9,6 +9,7 @@ import org.stellar.sdk.xdr.CryptoKeyType; import org.stellar.sdk.xdr.MuxedAccount; import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; public class ClaimableBalanceIdTest { @@ -84,7 +85,7 @@ public void testClaimableBalanceIds() throws IOException { muxedAccount.setDiscriminant(CryptoKeyType.KEY_TYPE_MUXED_ED25519); MuxedAccount.MuxedAccountMed25519 med = new MuxedAccount.MuxedAccountMed25519(); med.setEd25519(StrKey.encodeToXDRMuxedAccount(sourceAccount).getEd25519()); - med.setId(new Uint64(41l)); + med.setId(new Uint64(new XdrUnsignedHyperInteger(41l))); muxedAccount.setMed25519(med); transaction = diff --git a/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java b/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java index 4e7099e49..c241e7147 100644 --- a/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java +++ b/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java @@ -32,6 +32,7 @@ import org.stellar.sdk.xdr.Uint256; import org.stellar.sdk.xdr.Uint32; import org.stellar.sdk.xdr.XdrString; +import org.stellar.sdk.xdr.XdrUnsignedInteger; public class InvokeHostFunctionOperationTest { CreateContractArgs createContractArgs = @@ -215,7 +216,7 @@ public void testNotEqualsAuth() { "GASOCNHNNLYFNMDJYQ3XFMI7BYHIOCFW3GJEOWRPEGK2TDPGTG2E5EDW") .toSCAddress()) .nonce(new Int64(123123432L)) - .signatureExpirationLedger(new Uint32(10)) + .signatureExpirationLedger(new Uint32(new XdrUnsignedInteger(10))) .signatureArgs(new SCVec(new SCVal[] {})) .build()) .build()) diff --git a/src/test/java/org/stellar/sdk/MemoTest.java b/src/test/java/org/stellar/sdk/MemoTest.java index f67702033..1e5b6ecf9 100644 --- a/src/test/java/org/stellar/sdk/MemoTest.java +++ b/src/test/java/org/stellar/sdk/MemoTest.java @@ -9,6 +9,7 @@ import com.google.common.io.BaseEncoding; import com.google.gson.JsonElement; import com.google.gson.JsonParser; +import java.math.BigInteger; import java.util.Arrays; import org.junit.Test; import org.stellar.sdk.responses.TransactionDeserializer; @@ -62,22 +63,22 @@ public void testMemoTextTooLongUtf8() { @Test public void testMemoId() { MemoId memo = Memo.id(9223372036854775807L); - assertEquals(9223372036854775807L, memo.getId()); + assertEquals(BigInteger.valueOf(9223372036854775807L), memo.getId()); assertEquals(MemoType.MEMO_ID, memo.toXdr().getDiscriminant()); - assertEquals(new Long(9223372036854775807L), memo.toXdr().getId().getUint64()); + assertEquals( + BigInteger.valueOf(9223372036854775807L), memo.toXdr().getId().getUint64().getNumber()); assertEquals("9223372036854775807", memo.toString()); } @Test public void testParseMemoId() { - String longId = "10048071741004807174"; + String maxId = "18446744073709551615"; JsonElement element = - new JsonParser() - .parse(String.format("{ \"memo_type\": \"id\", \"memo\": \"%s\" }", longId)); + new JsonParser().parse(String.format("{ \"memo_type\": \"id\", \"memo\": \"%s\" }", maxId)); TransactionResponse transactionResponse = new TransactionDeserializer().deserialize(element, null, null); MemoId memoId = (MemoId) transactionResponse.getMemo(); - assertEquals(longId, Long.toUnsignedString(memoId.getId())); + assertEquals(new BigInteger(maxId), memoId.getId()); } @Test diff --git a/src/test/java/org/stellar/sdk/OperationTest.java b/src/test/java/org/stellar/sdk/OperationTest.java index 6d6f905b0..d34b684fb 100644 --- a/src/test/java/org/stellar/sdk/OperationTest.java +++ b/src/test/java/org/stellar/sdk/OperationTest.java @@ -1329,11 +1329,11 @@ public void testSetTrustlineFlagsOperation() { org.stellar.sdk.xdr.Operation xdr = operation.toXdr(AccountConverter.enableMuxed()); assertEquals( TrustLineFlags.AUTHORIZED_FLAG.getValue(), - xdr.getBody().getSetTrustLineFlagsOp().getClearFlags().getUint32().intValue()); + xdr.getBody().getSetTrustLineFlagsOp().getClearFlags().getUint32().getNumber().intValue()); assertEquals( TrustLineFlags.AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG.getValue() | TrustLineFlags.TRUSTLINE_CLAWBACK_ENABLED_FLAG.getValue(), - xdr.getBody().getSetTrustLineFlagsOp().getSetFlags().getUint32().intValue()); + xdr.getBody().getSetTrustLineFlagsOp().getSetFlags().getUint32().getNumber().intValue()); SetTrustlineFlagsOperation parsedOperation = (SetTrustlineFlagsOperation) Operation.fromXdr(AccountConverter.enableMuxed(), xdr); assertEquals(accountId, parsedOperation.getTrustor()); diff --git a/src/test/java/org/stellar/sdk/PredicateTest.java b/src/test/java/org/stellar/sdk/PredicateTest.java new file mode 100644 index 000000000..07d625588 --- /dev/null +++ b/src/test/java/org/stellar/sdk/PredicateTest.java @@ -0,0 +1,25 @@ +package org.stellar.sdk; + +import static org.junit.Assert.assertEquals; + +import java.math.BigInteger; +import org.junit.Test; +import org.threeten.bp.Instant; + +public class PredicateTest { + @Test + public void testAbsBeforeEpochLargeThanInstantMax() { + BigInteger epoch = BigInteger.valueOf(Instant.MAX.getEpochSecond()).add(BigInteger.ONE); + Predicate.AbsBefore absBefore = new Predicate.AbsBefore(epoch); + assertEquals(absBefore.getDate(), Instant.MAX); + assertEquals(absBefore.getTimestampSeconds(), epoch); + } + + @Test + public void testAbsBeforeEpochLessThanInstantMax() { + BigInteger epoch = BigInteger.valueOf(1691448835L); + Predicate.AbsBefore absBefore = new Predicate.AbsBefore(epoch); + assertEquals(absBefore.getDate().toString(), "2023-08-07T22:53:55Z"); + assertEquals(absBefore.getTimestampSeconds(), epoch); + } +} diff --git a/src/test/java/org/stellar/sdk/Sep10ChallengeTest.java b/src/test/java/org/stellar/sdk/Sep10ChallengeTest.java index 1f928fd3f..3e61df922 100644 --- a/src/test/java/org/stellar/sdk/Sep10ChallengeTest.java +++ b/src/test/java/org/stellar/sdk/Sep10ChallengeTest.java @@ -480,7 +480,7 @@ public void testReadChallengeTransactionInvalidTimeBoundsTooEarly() KeyPair client = KeyPair.random(); long current = System.currentTimeMillis() / 1000L; - long start = current + Sep10Challenge.GRACE_PERIOD_SECONDS + 30; + long start = current + Sep10Challenge.GRACE_PERIOD_SECONDS.longValue() + 30; long end = current + 600; TimeBounds timeBounds = new TimeBounds(start, end); String domainName = "example.com"; @@ -510,7 +510,7 @@ public void testReadChallengeTransactionGracePeriod() KeyPair client = KeyPair.random(); long current = System.currentTimeMillis() / 1000L; - long start = current + Sep10Challenge.GRACE_PERIOD_SECONDS - 30; + long start = current + Sep10Challenge.GRACE_PERIOD_SECONDS.longValue() - 30; long end = current + 600; TimeBounds timeBounds = new TimeBounds(start, end); String domainName = "example.com"; diff --git a/src/test/java/org/stellar/sdk/SorobanServerTest.java b/src/test/java/org/stellar/sdk/SorobanServerTest.java index cd576f103..7aae8ae34 100644 --- a/src/test/java/org/stellar/sdk/SorobanServerTest.java +++ b/src/test/java/org/stellar/sdk/SorobanServerTest.java @@ -70,6 +70,7 @@ import org.stellar.sdk.xdr.XdrDataInputStream; import org.stellar.sdk.xdr.XdrDataOutputStream; import org.stellar.sdk.xdr.XdrString; +import org.stellar.sdk.xdr.XdrUnsignedInteger; public class SorobanServerTest { private final Gson gson = new Gson(); @@ -921,10 +922,10 @@ public void testPrepareTransactionWithSorobanData() .readOnly(new LedgerKey[] {ledgerKey}) .readWrite(new LedgerKey[] {}) .build()) - .extendedMetaDataSizeBytes(new Uint32(216)) - .readBytes(new Uint32(699)) - .writeBytes(new Uint32(0)) - .instructions(new Uint32(34567)) + .extendedMetaDataSizeBytes(new Uint32(new XdrUnsignedInteger(216))) + .readBytes(new Uint32(new XdrUnsignedInteger(699))) + .writeBytes(new Uint32(new XdrUnsignedInteger(0))) + .instructions(new Uint32(new XdrUnsignedInteger(34567))) .build()) .refundableFee(new Int64(100L)) .ext(new ExtensionPoint.Builder().discriminant(0).build()) @@ -1382,7 +1383,7 @@ private Transaction buildSorobanTransaction( new Address(opInvokerKp.getAccountId()).toSCVal(), new SCVal.Builder() .discriminant(SCValType.SCV_U32) - .u32(new Uint32(10)) + .u32(new Uint32(new XdrUnsignedInteger(10))) .build() })) .build()) diff --git a/src/test/java/org/stellar/sdk/StrKeyTest.java b/src/test/java/org/stellar/sdk/StrKeyTest.java index 0526241ce..d82b8cf1a 100644 --- a/src/test/java/org/stellar/sdk/StrKeyTest.java +++ b/src/test/java/org/stellar/sdk/StrKeyTest.java @@ -308,7 +308,9 @@ public void testEncodeToXDRMuxedAccountMAddress() { MuxedAccount muxedAccount = StrKey.encodeToXDRMuxedAccount(muxedAddress); assertEquals(CryptoKeyType.KEY_TYPE_MUXED_ED25519, muxedAccount.getDiscriminant()); assertEquals(account.getAccountID().getEd25519(), muxedAccount.getMed25519().getEd25519()); - assertEquals(new Long(-9223372036854775808L), muxedAccount.getMed25519().getId().getUint64()); + assertEquals( + -9223372036854775808L, + muxedAccount.getMed25519().getId().getUint64().getNumber().longValue()); assertEquals(muxedAddress, StrKey.encodeStellarMuxedAccount(muxedAccount)); diff --git a/src/test/java/org/stellar/sdk/TimeBoundsTest.java b/src/test/java/org/stellar/sdk/TimeBoundsTest.java index eaded0cb7..4bbdd40c8 100644 --- a/src/test/java/org/stellar/sdk/TimeBoundsTest.java +++ b/src/test/java/org/stellar/sdk/TimeBoundsTest.java @@ -11,7 +11,7 @@ public void testSetTimeBoundsNegativeMinTime() { new TimeBounds(-1, 300); fail(); } catch (IllegalArgumentException e) { - assertEquals("minTime cannot be negative", e.getMessage()); + assertEquals("minTime must be between 0 and 2^64-1", e.getMessage()); } } @@ -21,7 +21,7 @@ public void testSetTimeBoundsNegativeMaxTime() { new TimeBounds(1, -300); fail(); } catch (IllegalArgumentException e) { - assertEquals("maxTime cannot be negative", e.getMessage()); + assertEquals("maxTime must be between 0 and 2^64-1", e.getMessage()); } } @@ -31,36 +31,36 @@ public void testSetTimeBoundsMinTimeGreatThanMaxTime() { new TimeBounds(300, 1); fail(); } catch (IllegalArgumentException e) { - assertEquals("minTime must be >= maxTime", e.getMessage()); + assertEquals("minTime must be <= maxTime", e.getMessage()); } } @Test public void TestSetTimeoutInfinite() { TimeBounds timebounds = new TimeBounds(300, 0); - assertEquals(300, timebounds.getMinTime()); - assertEquals(0, timebounds.getMaxTime()); + assertEquals(300, timebounds.getMinTime().longValue()); + assertEquals(0, timebounds.getMaxTime().longValue()); } @Test public void TestSetTimeoutInfiniteBothZero() { TimeBounds timebounds = new TimeBounds(0, 0); - assertEquals(0, timebounds.getMinTime()); - assertEquals(0, timebounds.getMaxTime()); + assertEquals(0, timebounds.getMinTime().longValue()); + assertEquals(0, timebounds.getMaxTime().longValue()); } @Test public void TestSetTimeout() { TimeBounds timebounds = new TimeBounds(1, 300); - assertEquals(1, timebounds.getMinTime()); - assertEquals(300, timebounds.getMaxTime()); + assertEquals(1, timebounds.getMinTime().longValue()); + assertEquals(300, timebounds.getMaxTime().longValue()); } @Test public void TestSetTimeoutMinEqualMax() { TimeBounds timebounds = new TimeBounds(300, 300); - assertEquals(300, timebounds.getMinTime()); - assertEquals(300, timebounds.getMaxTime()); + assertEquals(300, timebounds.getMinTime().longValue()); + assertEquals(300, timebounds.getMaxTime().longValue()); } @Test @@ -68,8 +68,9 @@ public void TestTimeoutWithTimeout() { long timeout = 300; TimeBounds timebounds = TimeBounds.expiresAfter(timeout); long now = System.currentTimeMillis() / 1000L; - assertEquals(0, timebounds.getMinTime()); + assertEquals(0, timebounds.getMinTime().longValue()); assertTrue( - timebounds.getMaxTime() - timeout <= now && timebounds.getMaxTime() - timeout >= now - 1); + timebounds.getMaxTime().longValue() - timeout <= now + && timebounds.getMaxTime().longValue() - timeout >= now - 1); } } diff --git a/src/test/java/org/stellar/sdk/TransactionBuilderTest.java b/src/test/java/org/stellar/sdk/TransactionBuilderTest.java index fb1e713d0..2e6ca7f84 100644 --- a/src/test/java/org/stellar/sdk/TransactionBuilderTest.java +++ b/src/test/java/org/stellar/sdk/TransactionBuilderTest.java @@ -6,6 +6,7 @@ import com.google.common.io.BaseEncoding; import java.io.ByteArrayInputStream; import java.io.IOException; +import java.math.BigInteger; import org.junit.Test; import org.stellar.sdk.xdr.*; @@ -155,6 +156,7 @@ public void testBuilderTimeBounds() throws FormatException, IOException { .getMinTime() .getTimePoint() .getUint64() + .getNumber() .longValue(), 42); assertEquals( @@ -166,6 +168,7 @@ public void testBuilderTimeBounds() throws FormatException, IOException { .getMaxTime() .getTimePoint() .getUint64() + .getNumber() .longValue(), 1337); @@ -243,8 +246,8 @@ public void testBuilderTimebounds() throws IOException { .setBaseFee(Transaction.MIN_BASE_FEE) .build(); - assertEquals(42, transaction.getTimeBounds().getMinTime()); - assertEquals(1337, transaction.getTimeBounds().getMaxTime()); + assertEquals(42, transaction.getTimeBounds().getMinTime().intValue()); + assertEquals(1337, transaction.getTimeBounds().getMaxTime().intValue()); // Convert transaction to binary XDR and back again to make sure correctly xdr de/serialized. XdrDataInputStream is = @@ -305,8 +308,8 @@ public void testBuilderTimeout() throws IOException { .setBaseFee(Transaction.MIN_BASE_FEE) .build(); - assertEquals(0, transaction.getTimeBounds().getMinTime()); - assertTrue(currentUnix + 10 <= transaction.getTimeBounds().getMaxTime()); + assertEquals(0, transaction.getTimeBounds().getMinTime().longValue()); + assertTrue(currentUnix + 10 <= transaction.getTimeBounds().getMaxTime().longValue()); // Convert transaction to binary XDR and back again to make sure timebounds are correctly // de/serialized. @@ -338,7 +341,8 @@ public void testBuilderSetsLedgerBounds() throws IOException { new CreateAccountOperation.Builder(newAccount.getAccountId(), "2000").build()) .addPreconditions( TransactionPreconditions.builder() - .timeBounds(new TimeBounds(0L, TransactionPreconditions.TIMEOUT_INFINITE)) + .timeBounds( + new TimeBounds(BigInteger.ZERO, TransactionPreconditions.TIMEOUT_INFINITE)) .ledgerBounds(LedgerBounds.builder().minLedger(1).maxLedger(2).build()) .build()) .setBaseFee(Transaction.MIN_BASE_FEE) @@ -377,7 +381,7 @@ public void testBuilderSetsMinSeqNum() throws IOException { SequenceNumber seqNum = new SequenceNumber(); seqNum.setSequenceNumber(new Int64(5L)); preconditionsV2.timeBounds( - TransactionBuilder.buildTimeBounds(0, TransactionPreconditions.TIMEOUT_INFINITE)); + buildTimeBounds(BigInteger.ZERO, TransactionPreconditions.TIMEOUT_INFINITE)); preconditionsV2.minSeqNum(seqNum); Transaction transaction = @@ -386,7 +390,8 @@ public void testBuilderSetsMinSeqNum() throws IOException { new CreateAccountOperation.Builder(newAccount.getAccountId(), "2000").build()) .addPreconditions( TransactionPreconditions.builder() - .timeBounds(new TimeBounds(0L, TransactionPreconditions.TIMEOUT_INFINITE)) + .timeBounds( + new TimeBounds(BigInteger.ZERO, TransactionPreconditions.TIMEOUT_INFINITE)) .minSeqNumber(5L) .build()) .setBaseFee(Transaction.MIN_BASE_FEE) @@ -427,13 +432,14 @@ public void testBuilderSetsMinSeqAge() throws IOException { new CreateAccountOperation.Builder(newAccount.getAccountId(), "2000").build()) .addPreconditions( TransactionPreconditions.builder() - .timeBounds(new TimeBounds(0L, TransactionPreconditions.TIMEOUT_INFINITE)) - .minSeqAge(5L) + .timeBounds( + new TimeBounds(BigInteger.ZERO, TransactionPreconditions.TIMEOUT_INFINITE)) + .minSeqAge(BigInteger.valueOf(5L)) .build()) .setBaseFee(Transaction.MIN_BASE_FEE) .build(); - assertEquals(5, transaction.getPreconditions().getMinSeqAge()); + assertEquals(5, transaction.getPreconditions().getMinSeqAge().intValue()); // Convert transaction to binary XDR and back again to make sure correctly xdr de/serialized. XdrDataInputStream is = @@ -468,7 +474,8 @@ public void testBuilderSetsMinSeqLedgerGap() throws IOException { new CreateAccountOperation.Builder(newAccount.getAccountId(), "2000").build()) .addPreconditions( TransactionPreconditions.builder() - .timeBounds(new TimeBounds(0L, TransactionPreconditions.TIMEOUT_INFINITE)) + .timeBounds( + new TimeBounds(BigInteger.ZERO, TransactionPreconditions.TIMEOUT_INFINITE)) .minSeqLedgerGap(5) .build()) .setBaseFee(Transaction.MIN_BASE_FEE) @@ -525,7 +532,8 @@ public void testBuilderExtraSigners() throws IOException { new CreateAccountOperation.Builder(newAccount.getAccountId(), "2000").build()) .addPreconditions( TransactionPreconditions.builder() - .timeBounds(new TimeBounds(0L, TransactionPreconditions.TIMEOUT_INFINITE)) + .timeBounds( + new TimeBounds(BigInteger.ZERO, TransactionPreconditions.TIMEOUT_INFINITE)) .extraSigners(newArrayList(signerKey)) .minSeqLedgerGap(5) .build()) @@ -571,7 +579,8 @@ public void testBuilderFailsWhenTooManyExtraSigners() throws IOException { new CreateAccountOperation.Builder(KeyPair.random().getAccountId(), "2000").build()) .addPreconditions( TransactionPreconditions.builder() - .timeBounds(new TimeBounds(0L, TransactionPreconditions.TIMEOUT_INFINITE)) + .timeBounds( + new TimeBounds(BigInteger.ZERO, TransactionPreconditions.TIMEOUT_INFINITE)) .extraSigners( newArrayList( new SignerKey.Builder().build(), @@ -599,14 +608,14 @@ public void testBuilderFailsWhenTimeoutLessThanTimeBoundsMinimum() throws Except // set min time to 120 seconds from now .timeBounds( new TimeBounds( - (System.currentTimeMillis() / 1000) + 120, + BigInteger.valueOf((System.currentTimeMillis() / 1000) + 120), TransactionPreconditions.TIMEOUT_INFINITE)) .build()) .setBaseFee(Transaction.MIN_BASE_FEE) .setTimeout(1); // sat max time to 1 second from now fail(); } catch (IllegalArgumentException exception) { - assertTrue(exception.getMessage().contains("minTime must be >= maxTime")); + assertTrue(exception.getMessage().contains("minTime must be <= maxTime")); } } @@ -619,7 +628,8 @@ public void testBuilderUsesAccountSequence() throws IOException { new CreateAccountOperation.Builder(KeyPair.random().getAccountId(), "2000").build()) .addPreconditions( TransactionPreconditions.builder() - .timeBounds(new TimeBounds(0L, TransactionPreconditions.TIMEOUT_INFINITE)) + .timeBounds( + new TimeBounds(BigInteger.ZERO, TransactionPreconditions.TIMEOUT_INFINITE)) .build()) .setBaseFee(Transaction.MIN_BASE_FEE) .build(); @@ -721,6 +731,7 @@ public void testBuilderInfinteTimeoutOnly() throws IOException { .getMinTime() .getTimePoint() .getUint64() + .getNumber() .longValue(), 0); assertEquals( @@ -732,6 +743,7 @@ public void testBuilderInfinteTimeoutOnly() throws IOException { .getMaxTime() .getTimePoint() .getUint64() + .getNumber() .longValue(), 0); } @@ -773,6 +785,7 @@ public void testBuilderTimeoutOnly() throws IOException { .getMinTime() .getTimePoint() .getUint64() + .getNumber() .longValue(), 0); assertTrue( @@ -785,6 +798,7 @@ public void testBuilderTimeoutOnly() throws IOException { .getMaxTime() .getTimePoint() .getUint64() + .getNumber() .longValue()); } @@ -801,7 +815,8 @@ public void testBuilderTimeoutAndMaxTimeNotSet() throws IOException { new TransactionBuilder(AccountConverter.enableMuxed(), account, Network.TESTNET) .addOperation( new CreateAccountOperation.Builder(destination.getAccountId(), "2000").build()) - .addTimeBounds(new TimeBounds(42, TransactionPreconditions.TIMEOUT_INFINITE)) + .addTimeBounds( + new TimeBounds(BigInteger.valueOf(42), TransactionPreconditions.TIMEOUT_INFINITE)) .setTimeout(10) .setBaseFee(Transaction.MIN_BASE_FEE) .build(); @@ -826,6 +841,7 @@ public void testBuilderTimeoutAndMaxTimeNotSet() throws IOException { .getMinTime() .getTimePoint() .getUint64() + .getNumber() .longValue(), 42); assertTrue( @@ -838,6 +854,7 @@ public void testBuilderTimeoutAndMaxTimeNotSet() throws IOException { .getMaxTime() .getTimePoint() .getUint64() + .getNumber() .longValue()); } @@ -854,7 +871,8 @@ public void testBuilderInfinteTimeoutAndMaxTimeNotSet() throws FormatException, new TransactionBuilder(AccountConverter.enableMuxed(), account, Network.TESTNET) .addOperation( new CreateAccountOperation.Builder(destination.getAccountId(), "2000").build()) - .addTimeBounds(new TimeBounds(42, TransactionPreconditions.TIMEOUT_INFINITE)) + .addTimeBounds( + new TimeBounds(BigInteger.valueOf(42), TransactionPreconditions.TIMEOUT_INFINITE)) .setTimeout(TransactionPreconditions.TIMEOUT_INFINITE) .addMemo(Memo.hash(Util.hash("abcdef".getBytes()))) .setBaseFee(100) @@ -880,6 +898,7 @@ public void testBuilderInfinteTimeoutAndMaxTimeNotSet() throws FormatException, .getMinTime() .getTimePoint() .getUint64() + .getNumber() .longValue(), 42); assertEquals( @@ -891,6 +910,7 @@ public void testBuilderInfinteTimeoutAndMaxTimeNotSet() throws FormatException, .getMaxTime() .getTimePoint() .getUint64() + .getNumber() .longValue(), 0); } @@ -1018,10 +1038,10 @@ public void voidBuilderSorobanDataXdrString() { .readOnly(new LedgerKey[] {ledgerKey}) .readWrite(new LedgerKey[] {}) .build()) - .extendedMetaDataSizeBytes(new Uint32(216)) - .readBytes(new Uint32(699)) - .writeBytes(new Uint32(0)) - .instructions(new Uint32(34567)) + .extendedMetaDataSizeBytes(new Uint32(new XdrUnsignedInteger(216))) + .readBytes(new Uint32(new XdrUnsignedInteger(699))) + .writeBytes(new Uint32(new XdrUnsignedInteger(0))) + .instructions(new Uint32(new XdrUnsignedInteger(34567))) .build()) .refundableFee(new Int64(100L)) .ext(new ExtensionPoint.Builder().discriminant(0).build()) @@ -1074,10 +1094,10 @@ public void voidBuilderSorobanDataXdrObject() { .readOnly(new LedgerKey[] {ledgerKey}) .readWrite(new LedgerKey[] {}) .build()) - .extendedMetaDataSizeBytes(new Uint32(216)) - .readBytes(new Uint32(699)) - .writeBytes(new Uint32(0)) - .instructions(new Uint32(34567)) + .extendedMetaDataSizeBytes(new Uint32(new XdrUnsignedInteger(216))) + .readBytes(new Uint32(new XdrUnsignedInteger(699))) + .writeBytes(new Uint32(new XdrUnsignedInteger(0))) + .instructions(new Uint32(new XdrUnsignedInteger(34567))) .build()) .refundableFee(new Int64(100L)) .ext(new ExtensionPoint.Builder().discriminant(0).build()) @@ -1129,4 +1149,12 @@ public void voidBuilderSorobanDataXdrObject() { .build(); assertEquals(expectedExt, transaction.toEnvelopeXdr().getV1().getTx().getExt()); } + + private static org.stellar.sdk.xdr.TimeBounds buildTimeBounds( + BigInteger minTime, BigInteger maxTime) { + return new org.stellar.sdk.xdr.TimeBounds.Builder() + .minTime(new TimePoint(new Uint64(new XdrUnsignedHyperInteger(minTime)))) + .maxTime(new TimePoint(new Uint64(new XdrUnsignedHyperInteger(maxTime)))) + .build(); + } } diff --git a/src/test/java/org/stellar/sdk/TransactionPreconditionsTest.java b/src/test/java/org/stellar/sdk/TransactionPreconditionsTest.java index d66b0b539..81940e1dc 100644 --- a/src/test/java/org/stellar/sdk/TransactionPreconditionsTest.java +++ b/src/test/java/org/stellar/sdk/TransactionPreconditionsTest.java @@ -25,6 +25,8 @@ import org.stellar.sdk.xdr.Uint64; import org.stellar.sdk.xdr.XdrDataInputStream; import org.stellar.sdk.xdr.XdrDataOutputStream; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; +import org.stellar.sdk.xdr.XdrUnsignedInteger; public class TransactionPreconditionsTest { @@ -36,14 +38,14 @@ public void itConvertsFromXdr() throws IOException { PreconditionsV2.Builder v2Builder = new PreconditionsV2.Builder(); v2Builder.extraSigners(new SignerKey[] {}); - v2Builder.minSeqAge(new Duration(new Uint64(2L))); + v2Builder.minSeqAge(new Duration(new Uint64(new XdrUnsignedHyperInteger(2L)))); v2Builder.ledgerBounds( new org.stellar.sdk.xdr.LedgerBounds.Builder() - .minLedger(new Uint32(1)) - .maxLedger(new Uint32(2)) + .minLedger(new Uint32(new XdrUnsignedInteger(1))) + .maxLedger(new Uint32(new XdrUnsignedInteger(2))) .build()); v2Builder.minSeqNum(new SequenceNumber(new Int64(4L))); - v2Builder.minSeqLedgerGap(new Uint32(0)); + v2Builder.minSeqLedgerGap(new Uint32(new XdrUnsignedInteger(0))); preconditionsBuilder.v2(v2Builder.build()); Preconditions xdr = preconditionsBuilder.build(); @@ -54,7 +56,7 @@ public void itConvertsFromXdr() throws IOException { TransactionPreconditions transactionPreconditions = TransactionPreconditions.fromXdr(xdr); - assertEquals(transactionPreconditions.getMinSeqAge(), 2); + assertEquals(transactionPreconditions.getMinSeqAge().longValue(), 2); assertEquals(transactionPreconditions.getLedgerBounds().getMinLedger(), 1); assertEquals(transactionPreconditions.getLedgerBounds().getMaxLedger(), 2); assertEquals(transactionPreconditions.getMinSeqNumber(), Long.valueOf(4)); @@ -69,12 +71,12 @@ public void itRoundTripsFromV2ToV1IfOnlyTimeboundsPresent() throws IOException { PreconditionsV2.Builder v2Builder = new PreconditionsV2.Builder(); org.stellar.sdk.xdr.TimeBounds xdrTimeBounds = new org.stellar.sdk.xdr.TimeBounds.Builder() - .minTime(new TimePoint(new Uint64(1L))) - .maxTime(new TimePoint(new Uint64(2L))) + .minTime(new TimePoint(new Uint64(new XdrUnsignedHyperInteger(1L)))) + .maxTime(new TimePoint(new Uint64(new XdrUnsignedHyperInteger(2L)))) .build(); v2Builder.timeBounds(xdrTimeBounds); - v2Builder.minSeqLedgerGap(new Uint32(0)); - v2Builder.minSeqAge(new Duration(new Uint64(0L))); + v2Builder.minSeqLedgerGap(new Uint32(new XdrUnsignedInteger(0))); + v2Builder.minSeqAge(new Duration(new Uint64(new XdrUnsignedHyperInteger(0L)))); v2Builder.extraSigners(new SignerKey[] {}); preconditionsBuilder.v2(v2Builder.build()); // create V2 Precond with just timebounds @@ -135,14 +137,16 @@ public void itConvertsToV2Xdr() throws IOException { assertEquals(xdr.getDiscriminant(), PreconditionType.PRECOND_V2); assertEquals( - xdr.getV2().getTimeBounds().getMinTime().getTimePoint().getUint64(), Long.valueOf(1)); + xdr.getV2().getTimeBounds().getMinTime().getTimePoint().getUint64().getNumber().longValue(), + 1L); assertEquals( - xdr.getV2().getTimeBounds().getMaxTime().getTimePoint().getUint64(), Long.valueOf(2)); + xdr.getV2().getTimeBounds().getMaxTime().getTimePoint().getUint64().getNumber().longValue(), + 2L); assertEquals(xdr.getV2().getMinSeqNum().getSequenceNumber().getInt64(), Long.valueOf(3)); // xdr encoding requires non-null for min ledger gap - assertEquals(xdr.getV2().getMinSeqLedgerGap().getUint32().intValue(), 0); + assertEquals(xdr.getV2().getMinSeqLedgerGap().getUint32().getNumber().intValue(), 0); // xdr encoding requires non-null for min seq age - assertEquals(xdr.getV2().getMinSeqAge().getDuration().getUint64().longValue(), 0); + assertEquals(xdr.getV2().getMinSeqAge().getDuration().getUint64().getNumber().longValue(), 0); assertEquals(xdr.getV2().getExtraSigners().length, 3); } @@ -160,8 +164,10 @@ public void itConvertsOnlyTimeBoundsXdr() throws IOException { Preconditions.decode(new XdrDataInputStream(new ByteArrayInputStream(baos.toByteArray()))); assertEquals(xdr.getDiscriminant(), PreconditionType.PRECOND_TIME); - assertEquals(xdr.getTimeBounds().getMinTime().getTimePoint().getUint64(), Long.valueOf(1)); - assertEquals(xdr.getTimeBounds().getMaxTime().getTimePoint().getUint64(), Long.valueOf(2)); + assertEquals( + xdr.getTimeBounds().getMinTime().getTimePoint().getUint64().getNumber().longValue(), 1L); + assertEquals( + xdr.getTimeBounds().getMaxTime().getTimePoint().getUint64().getNumber().longValue(), 2L); assertNull(xdr.getV2()); } @@ -239,11 +245,11 @@ public void itChecksV2Status() { PreconditionsV2.Builder v2Builder = new PreconditionsV2.Builder(); v2Builder.extraSigners(new SignerKey[] {}); - v2Builder.minSeqAge(new Duration(new Uint64(2L))); + v2Builder.minSeqAge(new Duration(new Uint64(new XdrUnsignedHyperInteger(2L)))); v2Builder.ledgerBounds( new org.stellar.sdk.xdr.LedgerBounds.Builder() - .minLedger(new Uint32(1)) - .maxLedger(new Uint32(2)) + .minLedger(new Uint32(new XdrUnsignedInteger(1))) + .maxLedger(new Uint32(new XdrUnsignedInteger(2))) .build()); v2Builder.minSeqNum(new SequenceNumber(new Int64(4L))); preconditionsBuilder.v2(v2Builder.build()); diff --git a/src/test/java/org/stellar/sdk/TransactionTest.java b/src/test/java/org/stellar/sdk/TransactionTest.java index e8cd7e432..a121ea898 100644 --- a/src/test/java/org/stellar/sdk/TransactionTest.java +++ b/src/test/java/org/stellar/sdk/TransactionTest.java @@ -8,6 +8,7 @@ import com.google.common.io.BaseEncoding; import java.io.ByteArrayInputStream; import java.io.IOException; +import java.math.BigInteger; import java.security.SecureRandom; import java.util.ArrayList; import java.util.Arrays; @@ -37,7 +38,8 @@ public void testParseV0Transaction() throws FormatException, IOException { new CreateAccountOperation.Builder(destination.getAccountId(), "2000").build() }, null, - new TransactionPreconditions(null, null, 0, 0, new ArrayList(), null), + new TransactionPreconditions( + null, null, BigInteger.ZERO, 0, new ArrayList(), null), null, Network.PUBLIC); @@ -84,7 +86,8 @@ public void testAddingSignaturesDirectly() { new CreateAccountOperation.Builder(destination.getAccountId(), "2000").build() }, null, - new TransactionPreconditions(null, null, 0, 0, new ArrayList(), null), + new TransactionPreconditions( + null, null, BigInteger.ZERO, 0, new ArrayList(), null), null, Network.PUBLIC); @@ -122,7 +125,8 @@ public void testSha256HashSigning() throws FormatException { .build() }, null, - new TransactionPreconditions(null, null, 0, 0, new ArrayList(), null), + new TransactionPreconditions( + null, null, BigInteger.ZERO, 0, new ArrayList(), null), null, Network.PUBLIC); @@ -158,7 +162,8 @@ public void testToBase64EnvelopeXdrBuilderNoSignatures() throws FormatException, new CreateAccountOperation.Builder(destination.getAccountId(), "2000").build() }, null, - new TransactionPreconditions(null, null, 0, 0, new ArrayList(), null), + new TransactionPreconditions( + null, null, BigInteger.ZERO, 0, new ArrayList(), null), null, Network.TESTNET); @@ -198,10 +203,10 @@ public void testConstructorWithSorobanData() throws IOException { .readOnly(new LedgerKey[] {ledgerKey}) .readWrite(new LedgerKey[] {}) .build()) - .extendedMetaDataSizeBytes(new Uint32(216)) - .readBytes(new Uint32(699)) - .writeBytes(new Uint32(0)) - .instructions(new Uint32(34567)) + .extendedMetaDataSizeBytes(new Uint32(new XdrUnsignedInteger(216))) + .readBytes(new Uint32(new XdrUnsignedInteger(699))) + .writeBytes(new Uint32(new XdrUnsignedInteger(0))) + .instructions(new Uint32(new XdrUnsignedInteger(34567))) .build()) .refundableFee(new Int64(100L)) .ext(new ExtensionPoint.Builder().discriminant(0).build()) @@ -241,7 +246,8 @@ public void testConstructorWithSorobanData() throws IOException { account.getIncrementedSequenceNumber(), new org.stellar.sdk.Operation[] {invokeHostFunctionOperation}, null, - new TransactionPreconditions(null, null, 0, 0, new ArrayList(), null), + new TransactionPreconditions( + null, null, BigInteger.ZERO, 0, new ArrayList(), null), sorobanData, Network.TESTNET); diff --git a/src/test/java/org/stellar/sdk/UtilTest.java b/src/test/java/org/stellar/sdk/UtilTest.java index 1c46dcca1..b362c2e63 100644 --- a/src/test/java/org/stellar/sdk/UtilTest.java +++ b/src/test/java/org/stellar/sdk/UtilTest.java @@ -29,10 +29,10 @@ public void testXdrToSorobanTransactionData() { .readOnly(new LedgerKey[] {ledgerKey}) .readWrite(new LedgerKey[] {}) .build()) - .extendedMetaDataSizeBytes(new Uint32(216)) - .readBytes(new Uint32(699)) - .writeBytes(new Uint32(0)) - .instructions(new Uint32(34567)) + .extendedMetaDataSizeBytes(new Uint32(new XdrUnsignedInteger(216))) + .readBytes(new Uint32(new XdrUnsignedInteger(699))) + .writeBytes(new Uint32(new XdrUnsignedInteger(0))) + .instructions(new Uint32(new XdrUnsignedInteger(34567))) .build()) .refundableFee(new Int64(100L)) .ext(new ExtensionPoint.Builder().discriminant(0).build()) diff --git a/src/test/java/org/stellar/sdk/responses/EffectDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/EffectDeserializerTest.java index 0f8d9ecea..c1ce832f1 100644 --- a/src/test/java/org/stellar/sdk/responses/EffectDeserializerTest.java +++ b/src/test/java/org/stellar/sdk/responses/EffectDeserializerTest.java @@ -2,6 +2,7 @@ import static org.stellar.sdk.Asset.create; +import java.math.BigInteger; import java.util.Arrays; import junit.framework.TestCase; import org.junit.Test; @@ -376,7 +377,8 @@ public void testDeserializeClaimableBalanceClaimantCreatedEffect() { assertEquals(effect.getType(), "claimable_balance_claimant_created"); assertSame(effect.getPredicate().getClass(), Predicate.AbsBefore.class); assertEquals( - ((Predicate.AbsBefore) effect.getPredicate()).getTimestampSeconds(), 1234567890982222222L); + ((Predicate.AbsBefore) effect.getPredicate()).getTimestampSeconds(), + BigInteger.valueOf(1234567890982222222L)); } @Test @@ -419,7 +421,9 @@ public void testBackwardsCompatAbsBeforeEpoch() { "0000000071d3336fa6b6cf81fcbeda85a503ccfabc786ab1066594716f3f9551ea4b89ca"); assertEquals(effect.getType(), "claimable_balance_claimant_created"); assertSame(effect.getPredicate().getClass(), Predicate.AbsBefore.class); - assertEquals(((Predicate.AbsBefore) effect.getPredicate()).getTimestampSeconds(), 1637479450L); + assertEquals( + ((Predicate.AbsBefore) effect.getPredicate()).getTimestampSeconds(), + BigInteger.valueOf(1637479450L)); } @Test diff --git a/src/test/java/org/stellar/sdk/responses/OperationDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/OperationDeserializerTest.java index 955b13eff..52723ab03 100644 --- a/src/test/java/org/stellar/sdk/responses/OperationDeserializerTest.java +++ b/src/test/java/org/stellar/sdk/responses/OperationDeserializerTest.java @@ -1829,7 +1829,7 @@ public void testDeserializeCreateClaimableBalanceOperation() { assertEquals( ((Predicate.AbsBefore) operation.getClaimants().get(0).getPredicate()) .getTimestampSeconds(), - 1234567890982222222L); + BigInteger.valueOf(1234567890982222222L)); assertEquals( operation.getClaimants().get(1).getDestination(), "GAKFBRS24U3PEN6XDMEX4JEV5NGBARS2ZFF5O4CF3JL464SQSD4MDCPF"); diff --git a/src/test/java/org/stellar/sdk/xdr/AccountEntryDecodeTest.java b/src/test/java/org/stellar/sdk/xdr/AccountEntryDecodeTest.java index 6a55aca23..f4004aef8 100644 --- a/src/test/java/org/stellar/sdk/xdr/AccountEntryDecodeTest.java +++ b/src/test/java/org/stellar/sdk/xdr/AccountEntryDecodeTest.java @@ -23,7 +23,7 @@ public void testDecodeSignerPayload() throws IOException { signerKey.getEd25519SignedPayload().setPayload(new byte[] {1, 2, 3, 4}); signerKey.getEd25519SignedPayload().setEd25519(new Uint256(new byte[32])); signer.setKey(signerKey); - signer.setWeight(new Uint32(1)); + signer.setWeight(new Uint32(new XdrUnsignedInteger(1))); bldr.signers(new Signer[] {signer}); bldr.accountID( new AccountID( @@ -33,8 +33,8 @@ public void testDecodeSignerPayload() throws IOException { .build())); bldr.seqNum(new SequenceNumber(new Int64(1L))); bldr.balance(new Int64(0L)); - bldr.numSubEntries(new Uint32(0)); - bldr.flags(new Uint32(0)); + bldr.numSubEntries(new Uint32(new XdrUnsignedInteger(0))); + bldr.flags(new Uint32(new XdrUnsignedInteger(0))); bldr.homeDomain(new String32(new XdrString(""))); bldr.thresholds(new Thresholds(new byte[3])); bldr.ext( @@ -52,8 +52,8 @@ public void testDecodeSignerPayload() throws IOException { .discriminant(2) .v2( new AccountEntryExtensionV2.Builder() - .numSponsored(new Uint32(0)) - .numSponsoring(new Uint32(0)) + .numSponsored(new Uint32(new XdrUnsignedInteger(0))) + .numSponsoring(new Uint32(new XdrUnsignedInteger(0))) .signerSponsoringIDs(new SponsorshipDescriptor[] {}) .ext( new AccountEntryExtensionV2.AccountEntryExtensionV2Ext @@ -61,8 +61,12 @@ public void testDecodeSignerPayload() throws IOException { .discriminant(3) .v3( new AccountEntryExtensionV3.Builder() - .seqLedger(new Uint32(1)) - .seqTime(new TimePoint(new Uint64(2L))) + .seqLedger( + new Uint32(new XdrUnsignedInteger(1))) + .seqTime( + new TimePoint( + new Uint64( + new XdrUnsignedHyperInteger(2L)))) .ext( new ExtensionPoint.Builder() .discriminant(0) @@ -102,6 +106,7 @@ public void testDecodeSignerPayload() throws IOException { .getV3() .getSeqLedger() .getUint32() + .getNumber() .longValue()); assertEquals( 2L, @@ -115,6 +120,7 @@ public void testDecodeSignerPayload() throws IOException { .getSeqTime() .getTimePoint() .getUint64() + .getNumber() .longValue()); } } From 0dc9b4b4a039d00bc7d5d1b2e97c5afe5fa7fe7f Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Thu, 10 Aug 2023 23:56:51 +0800 Subject: [PATCH 07/29] Add the fromXdrBase64, fromXdrByteArray, toXdrBase64 and toXdrByteArray methods to the XDR classes. (#503) * Update XDR, XDRGEN_COMMIT=472eac8c5609d310d48bd8eed68aa24d2626df53, XDRNEXT_COMMIT=e372df9f677961aac04c5a4cc80a3667f310b29f --- .../org/stellar/sdk/AbstractTransaction.java | 34 +-- .../sdk/ClaimClaimableBalanceOperation.java | 18 +- .../ClawbackClaimableBalanceOperation.java | 19 +- src/main/java/org/stellar/sdk/Operation.java | 10 +- ...eClaimableBalanceSponsorshipOperation.java | 22 +- .../java/org/stellar/sdk/SorobanServer.java | 80 ++--- src/main/java/org/stellar/sdk/StrKey.java | 11 +- .../org/stellar/sdk/TransactionBuilder.java | 8 +- src/main/java/org/stellar/sdk/Util.java | 68 ----- .../org/stellar/sdk/xdr/AccountEntry.java | 57 +++- .../sdk/xdr/AccountEntryExtensionV1.java | 57 +++- .../sdk/xdr/AccountEntryExtensionV2.java | 57 +++- .../sdk/xdr/AccountEntryExtensionV3.java | 29 ++ .../org/stellar/sdk/xdr/AccountFlags.java | 29 ++ .../java/org/stellar/sdk/xdr/AccountID.java | 29 ++ .../stellar/sdk/xdr/AccountMergeResult.java | 29 ++ .../sdk/xdr/AccountMergeResultCode.java | 29 ++ .../org/stellar/sdk/xdr/AllowTrustOp.java | 29 ++ .../org/stellar/sdk/xdr/AllowTrustResult.java | 29 ++ .../stellar/sdk/xdr/AllowTrustResultCode.java | 29 ++ .../java/org/stellar/sdk/xdr/AlphaNum12.java | 29 ++ .../java/org/stellar/sdk/xdr/AlphaNum4.java | 29 ++ src/main/java/org/stellar/sdk/xdr/Asset.java | 29 ++ .../java/org/stellar/sdk/xdr/AssetCode.java | 29 ++ .../java/org/stellar/sdk/xdr/AssetCode12.java | 29 ++ .../java/org/stellar/sdk/xdr/AssetCode4.java | 29 ++ .../java/org/stellar/sdk/xdr/AssetType.java | 29 ++ src/main/java/org/stellar/sdk/xdr/Auth.java | 29 ++ .../java/org/stellar/sdk/xdr/AuthCert.java | 29 ++ .../stellar/sdk/xdr/AuthenticatedMessage.java | 57 +++- .../xdr/BeginSponsoringFutureReservesOp.java | 29 ++ .../BeginSponsoringFutureReservesResult.java | 30 ++ ...ginSponsoringFutureReservesResultCode.java | 31 ++ .../java/org/stellar/sdk/xdr/BucketEntry.java | 29 ++ .../org/stellar/sdk/xdr/BucketEntryType.java | 29 ++ .../org/stellar/sdk/xdr/BucketMetadata.java | 57 +++- .../sdk/xdr/BumpFootprintExpirationOp.java | 29 ++ .../xdr/BumpFootprintExpirationResult.java | 29 ++ .../BumpFootprintExpirationResultCode.java | 29 ++ .../org/stellar/sdk/xdr/BumpSequenceOp.java | 29 ++ .../stellar/sdk/xdr/BumpSequenceResult.java | 29 ++ .../sdk/xdr/BumpSequenceResultCode.java | 29 ++ .../org/stellar/sdk/xdr/ChangeTrustAsset.java | 29 ++ .../org/stellar/sdk/xdr/ChangeTrustOp.java | 29 ++ .../stellar/sdk/xdr/ChangeTrustResult.java | 29 ++ .../sdk/xdr/ChangeTrustResultCode.java | 29 ++ .../java/org/stellar/sdk/xdr/ClaimAtom.java | 29 ++ .../org/stellar/sdk/xdr/ClaimAtomType.java | 29 ++ .../sdk/xdr/ClaimClaimableBalanceOp.java | 29 ++ .../sdk/xdr/ClaimClaimableBalanceResult.java | 29 ++ .../xdr/ClaimClaimableBalanceResultCode.java | 29 ++ .../stellar/sdk/xdr/ClaimLiquidityAtom.java | 29 ++ .../org/stellar/sdk/xdr/ClaimOfferAtom.java | 29 ++ .../org/stellar/sdk/xdr/ClaimOfferAtomV0.java | 29 ++ .../org/stellar/sdk/xdr/ClaimPredicate.java | 29 ++ .../stellar/sdk/xdr/ClaimPredicateType.java | 29 ++ .../sdk/xdr/ClaimableBalanceEntry.java | 57 +++- .../xdr/ClaimableBalanceEntryExtensionV1.java | 58 +++- .../sdk/xdr/ClaimableBalanceFlags.java | 29 ++ .../stellar/sdk/xdr/ClaimableBalanceID.java | 29 ++ .../sdk/xdr/ClaimableBalanceIDType.java | 29 ++ .../java/org/stellar/sdk/xdr/Claimant.java | 57 +++- .../org/stellar/sdk/xdr/ClaimantType.java | 29 ++ .../sdk/xdr/ClawbackClaimableBalanceOp.java | 29 ++ .../xdr/ClawbackClaimableBalanceResult.java | 29 ++ .../ClawbackClaimableBalanceResultCode.java | 29 ++ .../java/org/stellar/sdk/xdr/ClawbackOp.java | 29 ++ .../org/stellar/sdk/xdr/ClawbackResult.java | 29 ++ .../stellar/sdk/xdr/ClawbackResultCode.java | 29 ++ .../xdr/ConfigSettingContractBandwidthV0.java | 29 ++ .../xdr/ConfigSettingContractComputeV0.java | 29 ++ ...ConfigSettingContractExecutionLanesV0.java | 30 ++ ...ConfigSettingContractHistoricalDataV0.java | 30 ++ .../ConfigSettingContractLedgerCostV0.java | 29 ++ .../xdr/ConfigSettingContractMetaDataV0.java | 29 ++ .../stellar/sdk/xdr/ConfigSettingEntry.java | 29 ++ .../org/stellar/sdk/xdr/ConfigSettingID.java | 29 ++ .../org/stellar/sdk/xdr/ConfigUpgradeSet.java | 29 ++ .../stellar/sdk/xdr/ConfigUpgradeSetKey.java | 29 ++ .../java/org/stellar/sdk/xdr/Constants.java | 6 +- .../stellar/sdk/xdr/ContractCodeEntry.java | 57 +++- .../sdk/xdr/ContractCostParamEntry.java | 29 ++ .../stellar/sdk/xdr/ContractCostParams.java | 29 ++ .../org/stellar/sdk/xdr/ContractCostType.java | 29 ++ .../sdk/xdr/ContractDataDurability.java | 29 ++ .../stellar/sdk/xdr/ContractDataEntry.java | 85 +++++- .../stellar/sdk/xdr/ContractDataFlags.java | 29 ++ .../sdk/xdr/ContractEntryBodyType.java | 29 ++ .../org/stellar/sdk/xdr/ContractEvent.java | 85 +++++- .../stellar/sdk/xdr/ContractEventType.java | 29 ++ .../stellar/sdk/xdr/ContractExecutable.java | 29 ++ .../sdk/xdr/ContractExecutableType.java | 29 ++ .../stellar/sdk/xdr/ContractIDPreimage.java | 57 +++- .../sdk/xdr/ContractIDPreimageType.java | 29 ++ .../org/stellar/sdk/xdr/CreateAccountOp.java | 29 ++ .../stellar/sdk/xdr/CreateAccountResult.java | 29 ++ .../sdk/xdr/CreateAccountResultCode.java | 29 ++ .../sdk/xdr/CreateClaimableBalanceOp.java | 29 ++ .../sdk/xdr/CreateClaimableBalanceResult.java | 29 ++ .../xdr/CreateClaimableBalanceResultCode.java | 29 ++ .../stellar/sdk/xdr/CreateContractArgs.java | 29 ++ .../sdk/xdr/CreatePassiveSellOfferOp.java | 29 ++ .../org/stellar/sdk/xdr/CryptoKeyType.java | 29 ++ .../org/stellar/sdk/xdr/Curve25519Public.java | 29 ++ .../org/stellar/sdk/xdr/Curve25519Secret.java | 29 ++ .../java/org/stellar/sdk/xdr/DataEntry.java | 57 +++- .../java/org/stellar/sdk/xdr/DataValue.java | 29 ++ .../stellar/sdk/xdr/DecoratedSignature.java | 29 ++ .../org/stellar/sdk/xdr/DiagnosticEvent.java | 29 ++ .../java/org/stellar/sdk/xdr/DontHave.java | 29 ++ .../java/org/stellar/sdk/xdr/Duration.java | 29 ++ .../org/stellar/sdk/xdr/EncryptedBody.java | 29 ++ .../EndSponsoringFutureReservesResult.java | 29 ++ ...EndSponsoringFutureReservesResultCode.java | 30 ++ .../org/stellar/sdk/xdr/EnvelopeType.java | 29 ++ src/main/java/org/stellar/sdk/xdr/Error.java | 29 ++ .../java/org/stellar/sdk/xdr/ErrorCode.java | 29 ++ .../org/stellar/sdk/xdr/ExtensionPoint.java | 29 ++ .../stellar/sdk/xdr/FeeBumpTransaction.java | 85 +++++- .../sdk/xdr/FeeBumpTransactionEnvelope.java | 29 ++ .../java/org/stellar/sdk/xdr/FloodAdvert.java | 29 ++ .../java/org/stellar/sdk/xdr/FloodDemand.java | 29 ++ .../sdk/xdr/GeneralizedTransactionSet.java | 29 ++ src/main/java/org/stellar/sdk/xdr/Hash.java | 29 ++ .../org/stellar/sdk/xdr/HashIDPreimage.java | 142 ++++++++- src/main/java/org/stellar/sdk/xdr/Hello.java | 29 ++ .../org/stellar/sdk/xdr/HmacSha256Key.java | 29 ++ .../org/stellar/sdk/xdr/HmacSha256Mac.java | 29 ++ .../org/stellar/sdk/xdr/HostFunction.java | 29 ++ .../org/stellar/sdk/xdr/HostFunctionType.java | 29 ++ .../java/org/stellar/sdk/xdr/IPAddrType.java | 29 ++ .../org/stellar/sdk/xdr/InflationPayout.java | 29 ++ .../org/stellar/sdk/xdr/InflationResult.java | 29 ++ .../stellar/sdk/xdr/InflationResultCode.java | 29 ++ .../sdk/xdr/InnerTransactionResult.java | 85 +++++- .../sdk/xdr/InnerTransactionResultPair.java | 29 ++ .../java/org/stellar/sdk/xdr/Int128Parts.java | 29 ++ .../java/org/stellar/sdk/xdr/Int256Parts.java | 29 ++ src/main/java/org/stellar/sdk/xdr/Int32.java | 29 ++ src/main/java/org/stellar/sdk/xdr/Int64.java | 29 ++ .../stellar/sdk/xdr/InvokeHostFunctionOp.java | 29 ++ .../sdk/xdr/InvokeHostFunctionResult.java | 32 +- .../sdk/xdr/InvokeHostFunctionResultCode.java | 35 ++- .../InvokeHostFunctionSuccessPreImage.java | 29 ++ .../org/stellar/sdk/xdr/LedgerBounds.java | 29 ++ .../org/stellar/sdk/xdr/LedgerCloseMeta.java | 29 ++ .../stellar/sdk/xdr/LedgerCloseMetaV0.java | 29 ++ .../stellar/sdk/xdr/LedgerCloseMetaV1.java | 29 ++ .../stellar/sdk/xdr/LedgerCloseMetaV2.java | 29 ++ .../sdk/xdr/LedgerCloseValueSignature.java | 29 ++ .../java/org/stellar/sdk/xdr/LedgerEntry.java | 85 +++++- .../stellar/sdk/xdr/LedgerEntryChange.java | 29 ++ .../sdk/xdr/LedgerEntryChangeType.java | 29 ++ .../stellar/sdk/xdr/LedgerEntryChanges.java | 29 ++ .../sdk/xdr/LedgerEntryExtensionV1.java | 57 +++- .../org/stellar/sdk/xdr/LedgerEntryType.java | 29 ++ .../org/stellar/sdk/xdr/LedgerFootprint.java | 29 ++ .../org/stellar/sdk/xdr/LedgerHeader.java | 57 +++- .../sdk/xdr/LedgerHeaderExtensionV1.java | 57 +++- .../stellar/sdk/xdr/LedgerHeaderFlags.java | 29 ++ .../sdk/xdr/LedgerHeaderHistoryEntry.java | 57 +++- .../java/org/stellar/sdk/xdr/LedgerKey.java | 281 +++++++++++++++++- .../stellar/sdk/xdr/LedgerSCPMessages.java | 29 ++ .../org/stellar/sdk/xdr/LedgerUpgrade.java | 29 ++ .../stellar/sdk/xdr/LedgerUpgradeType.java | 29 ++ .../java/org/stellar/sdk/xdr/Liabilities.java | 29 ++ ...iquidityPoolConstantProductParameters.java | 31 ++ .../sdk/xdr/LiquidityPoolDepositOp.java | 29 ++ .../sdk/xdr/LiquidityPoolDepositResult.java | 29 ++ .../xdr/LiquidityPoolDepositResultCode.java | 29 ++ .../stellar/sdk/xdr/LiquidityPoolEntry.java | 86 +++++- .../sdk/xdr/LiquidityPoolParameters.java | 29 ++ .../stellar/sdk/xdr/LiquidityPoolType.java | 29 ++ .../sdk/xdr/LiquidityPoolWithdrawOp.java | 29 ++ .../sdk/xdr/LiquidityPoolWithdrawResult.java | 29 ++ .../xdr/LiquidityPoolWithdrawResultCode.java | 29 ++ .../org/stellar/sdk/xdr/ManageBuyOfferOp.java | 29 ++ .../stellar/sdk/xdr/ManageBuyOfferResult.java | 29 ++ .../sdk/xdr/ManageBuyOfferResultCode.java | 29 ++ .../org/stellar/sdk/xdr/ManageDataOp.java | 29 ++ .../org/stellar/sdk/xdr/ManageDataResult.java | 29 ++ .../stellar/sdk/xdr/ManageDataResultCode.java | 29 ++ .../stellar/sdk/xdr/ManageOfferEffect.java | 29 ++ .../sdk/xdr/ManageOfferSuccessResult.java | 57 +++- .../stellar/sdk/xdr/ManageSellOfferOp.java | 29 ++ .../sdk/xdr/ManageSellOfferResult.java | 29 ++ .../sdk/xdr/ManageSellOfferResultCode.java | 29 ++ src/main/java/org/stellar/sdk/xdr/Memo.java | 29 ++ .../java/org/stellar/sdk/xdr/MemoType.java | 29 ++ .../java/org/stellar/sdk/xdr/MessageType.java | 29 ++ .../org/stellar/sdk/xdr/MuxedAccount.java | 57 +++- src/main/java/org/stellar/sdk/xdr/NodeID.java | 29 ++ .../java/org/stellar/sdk/xdr/OfferEntry.java | 57 +++- .../org/stellar/sdk/xdr/OfferEntryFlags.java | 29 ++ .../java/org/stellar/sdk/xdr/Operation.java | 57 +++- .../org/stellar/sdk/xdr/OperationMeta.java | 29 ++ .../org/stellar/sdk/xdr/OperationResult.java | 57 +++- .../stellar/sdk/xdr/OperationResultCode.java | 29 ++ .../org/stellar/sdk/xdr/OperationType.java | 29 ++ .../sdk/xdr/PathPaymentStrictReceiveOp.java | 29 ++ .../xdr/PathPaymentStrictReceiveResult.java | 59 +++- .../PathPaymentStrictReceiveResultCode.java | 29 ++ .../sdk/xdr/PathPaymentStrictSendOp.java | 29 ++ .../sdk/xdr/PathPaymentStrictSendResult.java | 58 +++- .../xdr/PathPaymentStrictSendResultCode.java | 29 ++ .../java/org/stellar/sdk/xdr/PaymentOp.java | 29 ++ .../org/stellar/sdk/xdr/PaymentResult.java | 29 ++ .../stellar/sdk/xdr/PaymentResultCode.java | 29 ++ .../java/org/stellar/sdk/xdr/PeerAddress.java | 57 +++- .../org/stellar/sdk/xdr/PeerStatList.java | 29 ++ .../java/org/stellar/sdk/xdr/PeerStats.java | 29 ++ .../stellar/sdk/xdr/PersistedSCPState.java | 29 ++ .../stellar/sdk/xdr/PersistedSCPStateV0.java | 29 ++ .../stellar/sdk/xdr/PersistedSCPStateV1.java | 29 ++ src/main/java/org/stellar/sdk/xdr/PoolID.java | 29 ++ .../org/stellar/sdk/xdr/PreconditionType.java | 29 ++ .../org/stellar/sdk/xdr/Preconditions.java | 29 ++ .../org/stellar/sdk/xdr/PreconditionsV2.java | 29 ++ src/main/java/org/stellar/sdk/xdr/Price.java | 29 ++ .../java/org/stellar/sdk/xdr/PublicKey.java | 29 ++ .../org/stellar/sdk/xdr/PublicKeyType.java | 29 ++ .../stellar/sdk/xdr/RestoreFootprintOp.java | 29 ++ .../sdk/xdr/RestoreFootprintResult.java | 29 ++ .../sdk/xdr/RestoreFootprintResultCode.java | 29 ++ .../stellar/sdk/xdr/RevokeSponsorshipOp.java | 57 +++- .../sdk/xdr/RevokeSponsorshipResult.java | 29 ++ .../sdk/xdr/RevokeSponsorshipResultCode.java | 29 ++ .../sdk/xdr/RevokeSponsorshipType.java | 29 ++ .../java/org/stellar/sdk/xdr/SCAddress.java | 29 ++ .../org/stellar/sdk/xdr/SCAddressType.java | 29 ++ .../java/org/stellar/sdk/xdr/SCBytes.java | 29 ++ .../stellar/sdk/xdr/SCContractInstance.java | 29 ++ .../org/stellar/sdk/xdr/SCEnvMetaEntry.java | 29 ++ .../org/stellar/sdk/xdr/SCEnvMetaKind.java | 29 ++ .../java/org/stellar/sdk/xdr/SCError.java | 29 ++ .../java/org/stellar/sdk/xdr/SCErrorCode.java | 29 ++ .../java/org/stellar/sdk/xdr/SCErrorType.java | 29 ++ src/main/java/org/stellar/sdk/xdr/SCMap.java | 29 ++ .../java/org/stellar/sdk/xdr/SCMapEntry.java | 29 ++ .../java/org/stellar/sdk/xdr/SCMetaEntry.java | 29 ++ .../java/org/stellar/sdk/xdr/SCMetaKind.java | 29 ++ .../java/org/stellar/sdk/xdr/SCMetaV0.java | 33 +- .../java/org/stellar/sdk/xdr/SCNonceKey.java | 29 ++ .../java/org/stellar/sdk/xdr/SCPBallot.java | 29 ++ .../java/org/stellar/sdk/xdr/SCPEnvelope.java | 29 ++ .../org/stellar/sdk/xdr/SCPHistoryEntry.java | 29 ++ .../stellar/sdk/xdr/SCPHistoryEntryV0.java | 29 ++ .../org/stellar/sdk/xdr/SCPNomination.java | 29 ++ .../org/stellar/sdk/xdr/SCPQuorumSet.java | 29 ++ .../org/stellar/sdk/xdr/SCPStatement.java | 141 ++++++++- .../org/stellar/sdk/xdr/SCPStatementType.java | 29 ++ .../java/org/stellar/sdk/xdr/SCSpecEntry.java | 29 ++ .../org/stellar/sdk/xdr/SCSpecEntryKind.java | 29 ++ .../sdk/xdr/SCSpecFunctionInputV0.java | 29 ++ .../org/stellar/sdk/xdr/SCSpecFunctionV0.java | 29 ++ .../java/org/stellar/sdk/xdr/SCSpecType.java | 29 ++ .../org/stellar/sdk/xdr/SCSpecTypeBytesN.java | 29 ++ .../org/stellar/sdk/xdr/SCSpecTypeDef.java | 29 ++ .../org/stellar/sdk/xdr/SCSpecTypeMap.java | 29 ++ .../org/stellar/sdk/xdr/SCSpecTypeOption.java | 29 ++ .../org/stellar/sdk/xdr/SCSpecTypeResult.java | 29 ++ .../org/stellar/sdk/xdr/SCSpecTypeSet.java | 29 ++ .../org/stellar/sdk/xdr/SCSpecTypeTuple.java | 29 ++ .../org/stellar/sdk/xdr/SCSpecTypeUDT.java | 29 ++ .../org/stellar/sdk/xdr/SCSpecTypeVec.java | 29 ++ .../stellar/sdk/xdr/SCSpecUDTEnumCaseV0.java | 29 ++ .../org/stellar/sdk/xdr/SCSpecUDTEnumV0.java | 29 ++ .../sdk/xdr/SCSpecUDTErrorEnumCaseV0.java | 29 ++ .../stellar/sdk/xdr/SCSpecUDTErrorEnumV0.java | 29 ++ .../sdk/xdr/SCSpecUDTStructFieldV0.java | 29 ++ .../stellar/sdk/xdr/SCSpecUDTStructV0.java | 29 ++ .../sdk/xdr/SCSpecUDTUnionCaseTupleV0.java | 29 ++ .../stellar/sdk/xdr/SCSpecUDTUnionCaseV0.java | 29 ++ .../sdk/xdr/SCSpecUDTUnionCaseV0Kind.java | 29 ++ .../sdk/xdr/SCSpecUDTUnionCaseVoidV0.java | 29 ++ .../org/stellar/sdk/xdr/SCSpecUDTUnionV0.java | 29 ++ .../java/org/stellar/sdk/xdr/SCString.java | 31 +- .../java/org/stellar/sdk/xdr/SCSymbol.java | 29 ++ src/main/java/org/stellar/sdk/xdr/SCVal.java | 29 ++ .../java/org/stellar/sdk/xdr/SCValType.java | 29 ++ src/main/java/org/stellar/sdk/xdr/SCVec.java | 29 ++ .../java/org/stellar/sdk/xdr/SendMore.java | 29 ++ .../org/stellar/sdk/xdr/SendMoreExtended.java | 29 ++ .../org/stellar/sdk/xdr/SequenceNumber.java | 29 ++ .../org/stellar/sdk/xdr/SetOptionsOp.java | 29 ++ .../org/stellar/sdk/xdr/SetOptionsResult.java | 29 ++ .../stellar/sdk/xdr/SetOptionsResultCode.java | 29 ++ .../stellar/sdk/xdr/SetTrustLineFlagsOp.java | 29 ++ .../sdk/xdr/SetTrustLineFlagsResult.java | 29 ++ .../sdk/xdr/SetTrustLineFlagsResultCode.java | 29 ++ .../java/org/stellar/sdk/xdr/Signature.java | 29 ++ .../org/stellar/sdk/xdr/SignatureHint.java | 29 ++ .../sdk/xdr/SignedSurveyRequestMessage.java | 29 ++ .../sdk/xdr/SignedSurveyResponseMessage.java | 29 ++ src/main/java/org/stellar/sdk/xdr/Signer.java | 29 ++ .../java/org/stellar/sdk/xdr/SignerKey.java | 57 +++- .../org/stellar/sdk/xdr/SignerKeyType.java | 29 ++ .../stellar/sdk/xdr/SimplePaymentResult.java | 29 ++ .../sdk/xdr/SorobanAddressCredentials.java | 29 ++ .../sdk/xdr/SorobanAuthorizationEntry.java | 29 ++ .../SorobanAuthorizedContractFunction.java | 29 ++ .../sdk/xdr/SorobanAuthorizedFunction.java | 29 ++ .../xdr/SorobanAuthorizedFunctionType.java | 29 ++ .../sdk/xdr/SorobanAuthorizedInvocation.java | 29 ++ .../stellar/sdk/xdr/SorobanCredentials.java | 29 ++ .../sdk/xdr/SorobanCredentialsType.java | 29 ++ .../org/stellar/sdk/xdr/SorobanResources.java | 31 +- .../sdk/xdr/SorobanTransactionData.java | 29 ++ .../sdk/xdr/SorobanTransactionMeta.java | 29 ++ .../sdk/xdr/SponsorshipDescriptor.java | 29 ++ .../sdk/xdr/StateExpirationSettings.java | 29 ++ .../org/stellar/sdk/xdr/StellarMessage.java | 29 ++ .../org/stellar/sdk/xdr/StellarValue.java | 57 +++- .../org/stellar/sdk/xdr/StellarValueType.java | 29 ++ .../stellar/sdk/xdr/StoredTransactionSet.java | 29 ++ .../java/org/stellar/sdk/xdr/String32.java | 29 ++ .../java/org/stellar/sdk/xdr/String64.java | 29 ++ .../sdk/xdr/SurveyMessageCommandType.java | 29 ++ .../sdk/xdr/SurveyMessageResponseType.java | 29 ++ .../stellar/sdk/xdr/SurveyRequestMessage.java | 29 ++ .../stellar/sdk/xdr/SurveyResponseBody.java | 29 ++ .../sdk/xdr/SurveyResponseMessage.java | 29 ++ .../org/stellar/sdk/xdr/ThresholdIndexes.java | 29 ++ .../java/org/stellar/sdk/xdr/Thresholds.java | 29 ++ .../java/org/stellar/sdk/xdr/TimeBounds.java | 29 ++ .../java/org/stellar/sdk/xdr/TimePoint.java | 29 ++ .../sdk/xdr/TopologyResponseBodyV0.java | 29 ++ .../sdk/xdr/TopologyResponseBodyV1.java | 29 ++ .../java/org/stellar/sdk/xdr/Transaction.java | 57 +++- .../stellar/sdk/xdr/TransactionEnvelope.java | 29 ++ .../sdk/xdr/TransactionHistoryEntry.java | 57 +++- .../xdr/TransactionHistoryResultEntry.java | 57 +++- .../org/stellar/sdk/xdr/TransactionMeta.java | 29 ++ .../stellar/sdk/xdr/TransactionMetaV1.java | 29 ++ .../stellar/sdk/xdr/TransactionMetaV2.java | 29 ++ .../stellar/sdk/xdr/TransactionMetaV3.java | 29 ++ .../org/stellar/sdk/xdr/TransactionPhase.java | 29 ++ .../stellar/sdk/xdr/TransactionResult.java | 85 +++++- .../sdk/xdr/TransactionResultCode.java | 29 ++ .../sdk/xdr/TransactionResultMeta.java | 29 ++ .../sdk/xdr/TransactionResultPair.java | 29 ++ .../stellar/sdk/xdr/TransactionResultSet.java | 29 ++ .../org/stellar/sdk/xdr/TransactionSet.java | 29 ++ .../org/stellar/sdk/xdr/TransactionSetV1.java | 29 ++ .../sdk/xdr/TransactionSignaturePayload.java | 59 +++- .../org/stellar/sdk/xdr/TransactionV0.java | 57 +++- .../sdk/xdr/TransactionV0Envelope.java | 29 ++ .../sdk/xdr/TransactionV1Envelope.java | 29 ++ .../org/stellar/sdk/xdr/TrustLineAsset.java | 29 ++ .../org/stellar/sdk/xdr/TrustLineEntry.java | 113 ++++++- .../sdk/xdr/TrustLineEntryExtensionV2.java | 57 +++- .../org/stellar/sdk/xdr/TrustLineFlags.java | 29 ++ .../org/stellar/sdk/xdr/TxAdvertVector.java | 29 ++ .../org/stellar/sdk/xdr/TxDemandVector.java | 29 ++ .../org/stellar/sdk/xdr/TxSetComponent.java | 58 +++- .../stellar/sdk/xdr/TxSetComponentType.java | 29 ++ .../org/stellar/sdk/xdr/UInt128Parts.java | 29 ++ .../org/stellar/sdk/xdr/UInt256Parts.java | 29 ++ .../java/org/stellar/sdk/xdr/Uint256.java | 29 ++ src/main/java/org/stellar/sdk/xdr/Uint32.java | 29 ++ src/main/java/org/stellar/sdk/xdr/Uint64.java | 29 ++ .../org/stellar/sdk/xdr/UpgradeEntryMeta.java | 29 ++ .../java/org/stellar/sdk/xdr/UpgradeType.java | 29 ++ src/main/java/org/stellar/sdk/xdr/Value.java | 29 ++ .../java/org/stellar/sdk/xdr/XdrElement.java | 4 + .../java/org/stellar/sdk/xdr/XdrString.java | 37 +++ .../sdk/xdr/XdrUnsignedHyperInteger.java | 29 ++ .../stellar/sdk/xdr/XdrUnsignedInteger.java | 29 ++ .../org/stellar/sdk/SorobanServerTest.java | 6 +- .../stellar/sdk/TransactionBuilderTest.java | 4 +- src/test/java/org/stellar/sdk/UtilTest.java | 45 --- xdr/Stellar-transaction.x | 6 +- 372 files changed, 12307 insertions(+), 305 deletions(-) delete mode 100644 src/test/java/org/stellar/sdk/UtilTest.java diff --git a/src/main/java/org/stellar/sdk/AbstractTransaction.java b/src/main/java/org/stellar/sdk/AbstractTransaction.java index 0cef65a2c..50e908122 100644 --- a/src/main/java/org/stellar/sdk/AbstractTransaction.java +++ b/src/main/java/org/stellar/sdk/AbstractTransaction.java @@ -4,8 +4,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.io.BaseEncoding; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -15,8 +13,6 @@ import org.stellar.sdk.xdr.SignatureHint; import org.stellar.sdk.xdr.TransactionEnvelope; import org.stellar.sdk.xdr.TransactionSignaturePayload; -import org.stellar.sdk.xdr.XdrDataInputStream; -import org.stellar.sdk.xdr.XdrDataOutputStream; public abstract class AbstractTransaction { protected final Network mNetwork; @@ -120,13 +116,7 @@ public void addSignature(DecoratedSignature signature) { */ public String toEnvelopeXdrBase64() { try { - TransactionEnvelope envelope = this.toEnvelopeXdr(); - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - XdrDataOutputStream xdrOutputStream = new XdrDataOutputStream(outputStream); - TransactionEnvelope.encode(xdrOutputStream, envelope); - - BaseEncoding base64Encoding = BaseEncoding.base64(); - return base64Encoding.encode(outputStream.toByteArray()); + return toEnvelopeXdr().toXdrBase64(); } catch (IOException e) { throw new AssertionError(e); } @@ -176,11 +166,7 @@ public static AbstractTransaction fromEnvelopeXdr(TransactionEnvelope envelope, */ public static AbstractTransaction fromEnvelopeXdr( AccountConverter accountConverter, String envelope, Network network) throws IOException { - BaseEncoding base64Encoding = BaseEncoding.base64(); - byte[] bytes = base64Encoding.decode(envelope); - - TransactionEnvelope transactionEnvelope = - TransactionEnvelope.decode(new XdrDataInputStream(new ByteArrayInputStream(bytes))); + TransactionEnvelope transactionEnvelope = TransactionEnvelope.fromXdrBase64(envelope); return fromEnvelopeXdr(accountConverter, transactionEnvelope, network); } @@ -201,15 +187,13 @@ public static byte[] getTransactionSignatureBase( TransactionSignaturePayload.TransactionSignaturePayloadTaggedTransaction taggedTransaction, Network network) { try { - TransactionSignaturePayload payload = new TransactionSignaturePayload(); - Hash hash = new Hash(); - hash.setHash(network.getNetworkId()); - payload.setNetworkId(hash); - payload.setTaggedTransaction(taggedTransaction); - ByteArrayOutputStream txOutputStream = new ByteArrayOutputStream(); - XdrDataOutputStream xdrOutputStream = new XdrDataOutputStream(txOutputStream); - payload.encode(xdrOutputStream); - return txOutputStream.toByteArray(); + Hash networkIdHash = new Hash(network.getNetworkId()); + TransactionSignaturePayload payload = + new TransactionSignaturePayload.Builder() + .networkId(networkIdHash) + .taggedTransaction(taggedTransaction) + .build(); + return payload.toXdrByteArray(); } catch (IOException e) { throw new RuntimeException(e); } diff --git a/src/main/java/org/stellar/sdk/ClaimClaimableBalanceOperation.java b/src/main/java/org/stellar/sdk/ClaimClaimableBalanceOperation.java index 8bf42b9dd..fda2895c1 100644 --- a/src/main/java/org/stellar/sdk/ClaimClaimableBalanceOperation.java +++ b/src/main/java/org/stellar/sdk/ClaimClaimableBalanceOperation.java @@ -3,6 +3,8 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.IOException; import org.stellar.sdk.xdr.*; public class ClaimClaimableBalanceOperation extends Operation { @@ -18,8 +20,16 @@ public String getBalanceId() { @Override org.stellar.sdk.xdr.Operation.OperationBody toOperationBody(AccountConverter accountConverter) { + byte[] balanceIdBytes = BaseEncoding.base16().lowerCase().decode(this.balanceId.toLowerCase()); + ClaimableBalanceID balanceId; + try { + balanceId = ClaimableBalanceID.fromXdrByteArray(balanceIdBytes); + } catch (IOException e) { + throw new IllegalArgumentException("invalid balanceId: " + this.balanceId, e); + } + ClaimClaimableBalanceOp op = new ClaimClaimableBalanceOp(); - op.setBalanceID(Util.claimableBalanceIdToXDR(balanceId)); + op.setBalanceID(balanceId); org.stellar.sdk.xdr.Operation.OperationBody body = new org.stellar.sdk.xdr.Operation.OperationBody(); body.setDiscriminant(OperationType.CLAIM_CLAIMABLE_BALANCE); @@ -38,7 +48,11 @@ public static class Builder { * @param op {@link ClaimClaimableBalanceOp} */ Builder(ClaimClaimableBalanceOp op) { - balanceId = Util.xdrToClaimableBalanceId(op.getBalanceID()); + try { + balanceId = BaseEncoding.base16().lowerCase().encode(op.getBalanceID().toXdrByteArray()); + } catch (IOException e) { + throw new IllegalArgumentException("Invalid balanceId in the operation", e); + } } /** diff --git a/src/main/java/org/stellar/sdk/ClawbackClaimableBalanceOperation.java b/src/main/java/org/stellar/sdk/ClawbackClaimableBalanceOperation.java index 772b16391..d9ea2315b 100644 --- a/src/main/java/org/stellar/sdk/ClawbackClaimableBalanceOperation.java +++ b/src/main/java/org/stellar/sdk/ClawbackClaimableBalanceOperation.java @@ -3,6 +3,9 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.IOException; +import org.stellar.sdk.xdr.ClaimableBalanceID; import org.stellar.sdk.xdr.ClawbackClaimableBalanceOp; import org.stellar.sdk.xdr.OperationType; @@ -26,9 +29,17 @@ public String getBalanceId() { @Override org.stellar.sdk.xdr.Operation.OperationBody toOperationBody(AccountConverter accountConverter) { + byte[] balanceIdBytes = BaseEncoding.base16().lowerCase().decode(this.balanceId.toLowerCase()); + ClaimableBalanceID balanceId; + try { + balanceId = ClaimableBalanceID.fromXdrByteArray(balanceIdBytes); + } catch (IOException e) { + throw new IllegalArgumentException("invalid balanceId: " + this.balanceId, e); + } + ClawbackClaimableBalanceOp op = new ClawbackClaimableBalanceOp(); - op.setBalanceID(Util.claimableBalanceIdToXDR(balanceId)); + op.setBalanceID(balanceId); org.stellar.sdk.xdr.Operation.OperationBody body = new org.stellar.sdk.xdr.Operation.OperationBody(); @@ -48,7 +59,11 @@ public static class Builder { private String mSourceAccount; Builder(ClawbackClaimableBalanceOp op) { - balanceId = Util.xdrToClaimableBalanceId(op.getBalanceID()); + try { + balanceId = BaseEncoding.base16().lowerCase().encode(op.getBalanceID().toXdrByteArray()); + } catch (IOException e) { + throw new IllegalArgumentException("Invalid balanceId in the operation", e); + } } /** diff --git a/src/main/java/org/stellar/sdk/Operation.java b/src/main/java/org/stellar/sdk/Operation.java index 54d479295..f9af93cb3 100644 --- a/src/main/java/org/stellar/sdk/Operation.java +++ b/src/main/java/org/stellar/sdk/Operation.java @@ -2,15 +2,12 @@ import static com.google.common.base.Preconditions.checkNotNull; -import com.google.common.io.BaseEncoding; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.math.BigDecimal; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; import lombok.experimental.SuperBuilder; -import org.stellar.sdk.xdr.XdrDataOutputStream; /** Abstract class for operations. */ @SuperBuilder(toBuilder = true) @@ -51,12 +48,7 @@ public org.stellar.sdk.xdr.Operation toXdr() { /** Returns base64-encoded Operation XDR object. */ public String toXdrBase64(AccountConverter accountConverter) { try { - org.stellar.sdk.xdr.Operation operation = this.toXdr(accountConverter); - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - XdrDataOutputStream xdrOutputStream = new XdrDataOutputStream(outputStream); - org.stellar.sdk.xdr.Operation.encode(xdrOutputStream, operation); - BaseEncoding base64Encoding = BaseEncoding.base64(); - return base64Encoding.encode(outputStream.toByteArray()); + return toXdr(accountConverter).toXdrBase64(); } catch (IOException e) { throw new AssertionError(e); } diff --git a/src/main/java/org/stellar/sdk/RevokeClaimableBalanceSponsorshipOperation.java b/src/main/java/org/stellar/sdk/RevokeClaimableBalanceSponsorshipOperation.java index 9e2026256..763f47010 100644 --- a/src/main/java/org/stellar/sdk/RevokeClaimableBalanceSponsorshipOperation.java +++ b/src/main/java/org/stellar/sdk/RevokeClaimableBalanceSponsorshipOperation.java @@ -3,6 +3,8 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.IOException; import org.stellar.sdk.xdr.*; public class RevokeClaimableBalanceSponsorshipOperation extends Operation { @@ -18,13 +20,21 @@ public String getBalanceId() { @Override org.stellar.sdk.xdr.Operation.OperationBody toOperationBody(AccountConverter accountConverter) { + byte[] balanceIdBytes = BaseEncoding.base16().lowerCase().decode(this.balanceId.toLowerCase()); + ClaimableBalanceID balanceId; + try { + balanceId = ClaimableBalanceID.fromXdrByteArray(balanceIdBytes); + } catch (IOException e) { + throw new IllegalArgumentException("invalid balanceId: " + this.balanceId, e); + } + RevokeSponsorshipOp op = new RevokeSponsorshipOp(); LedgerKey key = new LedgerKey(); key.setDiscriminant(LedgerEntryType.CLAIMABLE_BALANCE); LedgerKey.LedgerKeyClaimableBalance claimableBalance = new LedgerKey.LedgerKeyClaimableBalance(); - claimableBalance.setBalanceID(Util.claimableBalanceIdToXDR(balanceId)); + claimableBalance.setBalanceID(balanceId); key.setClaimableBalance(claimableBalance); op.setLedgerKey(key); op.setDiscriminant(RevokeSponsorshipType.REVOKE_SPONSORSHIP_LEDGER_ENTRY); @@ -49,8 +59,14 @@ public static class Builder { * @param op {@link RevokeSponsorshipOp} */ Builder(RevokeSponsorshipOp op) { - balanceId = - Util.xdrToClaimableBalanceId(op.getLedgerKey().getClaimableBalance().getBalanceID()); + try { + balanceId = + BaseEncoding.base16() + .lowerCase() + .encode(op.getLedgerKey().getClaimableBalance().getBalanceID().toXdrByteArray()); + } catch (IOException e) { + throw new IllegalArgumentException("Invalid claimableBalance in the operation", e); + } } /** diff --git a/src/main/java/org/stellar/sdk/SorobanServer.java b/src/main/java/org/stellar/sdk/SorobanServer.java index f1b81fe99..410721bc9 100644 --- a/src/main/java/org/stellar/sdk/SorobanServer.java +++ b/src/main/java/org/stellar/sdk/SorobanServer.java @@ -1,10 +1,7 @@ package org.stellar.sdk; -import com.google.common.io.BaseEncoding; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.Closeable; import java.io.IOException; import java.util.ArrayList; @@ -14,7 +11,6 @@ import java.util.Optional; import java.util.UUID; import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; import javax.annotation.Nullable; import okhttp3.HttpUrl; import okhttp3.MediaType; @@ -48,8 +44,6 @@ import org.stellar.sdk.xdr.SCVal; import org.stellar.sdk.xdr.SorobanAuthorizationEntry; import org.stellar.sdk.xdr.SorobanTransactionData; -import org.stellar.sdk.xdr.XdrDataInputStream; -import org.stellar.sdk.xdr.XdrDataOutputStream; /** * Main class used to connect to the Soroban-RPC instance and exposes an interface for requests to @@ -122,8 +116,12 @@ public TransactionBuilderAccount getAccount(String accountId) if (entries == null || entries.isEmpty()) { throw new AccountNotFoundException(accountId); } - LedgerEntry.LedgerEntryData ledgerEntryData = - ledgerEntryDataFromXdrBase64(entries.get(0).getXdr()); + LedgerEntry.LedgerEntryData ledgerEntryData; + try { + ledgerEntryData = LedgerEntry.LedgerEntryData.fromXdrBase64(entries.get(0).getXdr()); + } catch (IOException e) { + throw new IllegalArgumentException("Invalid ledgerEntryData: " + entries.get(0).getXdr(), e); + } long sequence = ledgerEntryData.getAccount().getSeqNum().getSequenceNumber().getInt64(); return new Account(accountId, sequence); } @@ -220,8 +218,16 @@ public GetLedgerEntriesResponse getLedgerEntries(Collection keys) throw new IllegalArgumentException("At least one key must be provided."); } - List xdrKeys = - keys.stream().map(SorobanServer::ledgerKeyToXdrBase64).collect(Collectors.toList()); + List xdrKeys = new ArrayList<>(keys.size()); + for (LedgerKey key : keys) { + String xdrBase64; + try { + xdrBase64 = key.toXdrBase64(); + } catch (IOException e) { + throw new IllegalArgumentException("Invalid ledgerKey: " + key, e); + } + xdrKeys.add(xdrBase64); + } GetLedgerEntriesRequest params = new GetLedgerEntriesRequest(xdrKeys); return this.sendRequest( "getLedgerEntries", @@ -421,7 +427,11 @@ private Transaction assembleTransaction( List newEntries = new ArrayList<>(originalEntries); if (simulateHostFunctionResult.getAuth() != null) { for (String auth : simulateHostFunctionResult.getAuth()) { - newEntries.add(sorobanAuthorizationEntryFromXdrBase64(auth)); + try { + newEntries.add(SorobanAuthorizationEntry.fromXdrBase64(auth)); + } catch (IOException e) { + throw new IllegalArgumentException("Invalid auth: " + auth, e); + } } } operation = @@ -432,8 +442,14 @@ private Transaction assembleTransaction( .build(); } - SorobanTransactionData sorobanData = - Util.sorobanTransactionDataToXDR(simulateTransactionResponse.getTransactionData()); + SorobanTransactionData sorobanData; + try { + sorobanData = + SorobanTransactionData.fromXdrBase64(simulateTransactionResponse.getTransactionData()); + } catch (IOException e) { + throw new IllegalArgumentException( + "Invalid transactionData: " + simulateTransactionResponse.getTransactionData(), e); + } return new Transaction( transaction.getAccountConverter(), @@ -477,44 +493,6 @@ private static String generateRequestId() { return UUID.randomUUID().toString(); } - private static String ledgerKeyToXdrBase64(LedgerKey ledgerKey) { - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); - try { - ledgerKey.encode(xdrDataOutputStream); - } catch (IOException e) { - throw new IllegalArgumentException("invalid ledgerKey.", e); - } - BaseEncoding base64Encoding = BaseEncoding.base64(); - return base64Encoding.encode(byteArrayOutputStream.toByteArray()); - } - - private static LedgerEntry.LedgerEntryData ledgerEntryDataFromXdrBase64(String ledgerEntryData) { - BaseEncoding base64Encoding = BaseEncoding.base64(); - byte[] bytes = base64Encoding.decode(ledgerEntryData); - ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); - XdrDataInputStream xdrInputStream = new XdrDataInputStream(inputStream); - try { - return LedgerEntry.LedgerEntryData.decode(xdrInputStream); - } catch (IOException e) { - throw new IllegalArgumentException("invalid ledgerEntryData: " + ledgerEntryData, e); - } - } - - private static SorobanAuthorizationEntry sorobanAuthorizationEntryFromXdrBase64( - String sorobanAuthorizationEntry) { - BaseEncoding base64Encoding = BaseEncoding.base64(); - byte[] bytes = base64Encoding.decode(sorobanAuthorizationEntry); - ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); - XdrDataInputStream xdrInputStream = new XdrDataInputStream(inputStream); - try { - return SorobanAuthorizationEntry.decode(xdrInputStream); - } catch (IOException e) { - throw new IllegalArgumentException( - "invalid ledgerEntryData: " + sorobanAuthorizationEntry, e); - } - } - /** * Represents the "durability keyspace" that this ledger key belongs to, check {@link * SorobanServer#getContractData} for more details. diff --git a/src/main/java/org/stellar/sdk/StrKey.java b/src/main/java/org/stellar/sdk/StrKey.java index c6ab224f6..26db710b3 100644 --- a/src/main/java/org/stellar/sdk/StrKey.java +++ b/src/main/java/org/stellar/sdk/StrKey.java @@ -98,9 +98,7 @@ public static AccountID encodeToXDRAccountId(String data) { PublicKey publicKey = new PublicKey(); publicKey.setDiscriminant(PublicKeyType.PUBLIC_KEY_TYPE_ED25519); try { - publicKey.setEd25519( - Uint256.decode( - new XdrDataInputStream(new ByteArrayInputStream(decodeStellarAccountId(data))))); + publicKey.setEd25519(Uint256.fromXdrByteArray(decodeStellarAccountId(data))); } catch (IOException e) { throw new IllegalArgumentException("invalid address: " + data, e); } @@ -118,9 +116,7 @@ public static MuxedAccount encodeToXDRMuxedAccount(String data) { case ACCOUNT_ID: muxed.setDiscriminant(CryptoKeyType.KEY_TYPE_ED25519); try { - muxed.setEd25519( - Uint256.decode( - new XdrDataInputStream(new ByteArrayInputStream(decodeStellarAccountId(data))))); + muxed.setEd25519(Uint256.fromXdrByteArray(decodeStellarAccountId(data))); } catch (IOException e) { throw new IllegalArgumentException("invalid address: " + data, e); } @@ -176,8 +172,7 @@ public static SignedPayloadSigner decodeSignedPayload(char[] data) { byte[] signedPayloadRaw = decodeCheck(VersionByte.SIGNED_PAYLOAD, data); SignerKey.SignerKeyEd25519SignedPayload xdrPayloadSigner = - SignerKey.SignerKeyEd25519SignedPayload.decode( - new XdrDataInputStream(new ByteArrayInputStream(signedPayloadRaw))); + SignerKey.SignerKeyEd25519SignedPayload.fromXdrByteArray(signedPayloadRaw); return new SignedPayloadSigner( xdrPayloadSigner.getEd25519().getUint256(), xdrPayloadSigner.getPayload()); diff --git a/src/main/java/org/stellar/sdk/TransactionBuilder.java b/src/main/java/org/stellar/sdk/TransactionBuilder.java index 487034086..da85d14f5 100644 --- a/src/main/java/org/stellar/sdk/TransactionBuilder.java +++ b/src/main/java/org/stellar/sdk/TransactionBuilder.java @@ -5,6 +5,7 @@ import static org.stellar.sdk.TransactionPreconditions.TIMEOUT_INFINITE; import com.google.common.base.Function; +import java.io.IOException; import java.math.BigInteger; import java.util.Collection; import java.util.List; @@ -280,7 +281,12 @@ public TransactionBuilder setSorobanData(SorobanTransactionData sorobanData) { * @return Builder object so you can chain methods. */ public TransactionBuilder setSorobanData(String sorobanData) { - SorobanTransactionData data = Util.sorobanTransactionDataToXDR(sorobanData); + SorobanTransactionData data; + try { + data = SorobanTransactionData.fromXdrBase64(sorobanData); + } catch (IOException e) { + throw new IllegalArgumentException("Invalid Soroban data: " + sorobanData, e); + } return setSorobanData(data); } } diff --git a/src/main/java/org/stellar/sdk/Util.java b/src/main/java/org/stellar/sdk/Util.java index eaa458058..dd76e6f93 100644 --- a/src/main/java/org/stellar/sdk/Util.java +++ b/src/main/java/org/stellar/sdk/Util.java @@ -1,16 +1,8 @@ package org.stellar.sdk; -import com.google.common.io.BaseEncoding; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; -import org.stellar.sdk.xdr.ClaimableBalanceID; -import org.stellar.sdk.xdr.SorobanTransactionData; -import org.stellar.sdk.xdr.XdrDataInputStream; -import org.stellar.sdk.xdr.XdrDataOutputStream; public class Util { @@ -101,66 +93,6 @@ public static String getSdkVersion() { return clientVersion; } - public static ClaimableBalanceID claimableBalanceIdToXDR(String balanceId) { - byte[] balanceIdBytes = BaseEncoding.base16().lowerCase().decode(balanceId.toLowerCase()); - XdrDataInputStream balanceIdXdrDataInputStream = - new XdrDataInputStream(new ByteArrayInputStream(balanceIdBytes)); - - try { - return ClaimableBalanceID.decode(balanceIdXdrDataInputStream); - } catch (IOException e) { - throw new IllegalArgumentException("invalid balanceId: " + balanceId, e); - } - } - - public static String xdrToClaimableBalanceId(ClaimableBalanceID balanceId) { - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); - try { - balanceId.encode(xdrDataOutputStream); - } catch (IOException e) { - throw new IllegalArgumentException("invalid claimClaimableBalanceOp.", e); - } - return BaseEncoding.base16().lowerCase().encode(byteArrayOutputStream.toByteArray()); - } - - /** - * Convert {@link SorobanTransactionData} XDR String representation to {@link - * SorobanTransactionData} object. - * - * @param sorobanData XDR String representation of a {@link SorobanTransactionData} - * @return {@link SorobanTransactionData} - */ - public static SorobanTransactionData sorobanTransactionDataToXDR(String sorobanData) { - BaseEncoding base64Encoding = BaseEncoding.base64(); - byte[] bytes = base64Encoding.decode(sorobanData); - ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); - XdrDataInputStream xdrInputStream = new XdrDataInputStream(inputStream); - try { - return SorobanTransactionData.decode(xdrInputStream); - } catch (IOException e) { - throw new IllegalArgumentException("invalid sorobanData: " + sorobanData, e); - } - } - - /** - * Convert {@link SorobanTransactionData} object to XDR String representation. - * - * @param sorobanData {@link SorobanTransactionData} object - * @return XDR String representation of a {@link SorobanTransactionData} - */ - public static String xdrToSorobanTransactionData(SorobanTransactionData sorobanData) { - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); - try { - sorobanData.encode(xdrDataOutputStream); - } catch (IOException e) { - throw new IllegalArgumentException("invalid sorobanData.", e); - } - BaseEncoding base64Encoding = BaseEncoding.base64(); - return base64Encoding.encode(byteArrayOutputStream.toByteArray()); - } - public static AssetTypeCreditAlphaNum assertNonNativeAsset(Asset asset) { if (asset instanceof AssetTypeCreditAlphaNum) { return (AssetTypeCreditAlphaNum) asset; diff --git a/src/main/java/org/stellar/sdk/xdr/AccountEntry.java b/src/main/java/org/stellar/sdk/xdr/AccountEntry.java index 57ed904d9..03be0dd10 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -227,6 +230,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AccountEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AccountEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID accountID; private Int64 balance; @@ -305,7 +334,7 @@ public AccountEntry build() { } } - public static class AccountEntryExt { + public static class AccountEntryExt implements XdrElement { public AccountEntryExt() {} Integer v; @@ -396,5 +425,31 @@ public boolean equals(Object object) { AccountEntryExt other = (AccountEntryExt) object; return Objects.equal(this.v1, other.v1) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AccountEntryExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AccountEntryExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV1.java b/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV1.java index 5f5548726..fe0ea8027 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV1.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV1.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -81,6 +84,32 @@ public boolean equals(Object object) { return Objects.equal(this.liabilities, other.liabilities) && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AccountEntryExtensionV1 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AccountEntryExtensionV1 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Liabilities liabilities; private AccountEntryExtensionV1Ext ext; @@ -103,7 +132,7 @@ public AccountEntryExtensionV1 build() { } } - public static class AccountEntryExtensionV1Ext { + public static class AccountEntryExtensionV1Ext implements XdrElement { public AccountEntryExtensionV1Ext() {} Integer v; @@ -196,5 +225,31 @@ public boolean equals(Object object) { AccountEntryExtensionV1Ext other = (AccountEntryExtensionV1Ext) object; return Objects.equal(this.v2, other.v2) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AccountEntryExtensionV1Ext fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AccountEntryExtensionV1Ext fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV2.java b/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV2.java index 6fcbd89e0..8d4151a4a 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV2.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV2.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -121,6 +124,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AccountEntryExtensionV2 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AccountEntryExtensionV2 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 numSponsored; private Uint32 numSponsoring; @@ -157,7 +186,7 @@ public AccountEntryExtensionV2 build() { } } - public static class AccountEntryExtensionV2Ext { + public static class AccountEntryExtensionV2Ext implements XdrElement { public AccountEntryExtensionV2Ext() {} Integer v; @@ -250,5 +279,31 @@ public boolean equals(Object object) { AccountEntryExtensionV2Ext other = (AccountEntryExtensionV2Ext) object; return Objects.equal(this.v3, other.v3) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AccountEntryExtensionV2Ext fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AccountEntryExtensionV2Ext fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV3.java b/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV3.java index 44a51aef3..0affd3ae1 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV3.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountEntryExtensionV3.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -94,6 +97,32 @@ public boolean equals(Object object) { && Objects.equal(this.seqTime, other.seqTime); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AccountEntryExtensionV3 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AccountEntryExtensionV3 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ExtensionPoint ext; private Uint32 seqLedger; diff --git a/src/main/java/org/stellar/sdk/xdr/AccountFlags.java b/src/main/java/org/stellar/sdk/xdr/AccountFlags.java index 35b38cb06..a763bf8e8 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountFlags.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountFlags.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -67,4 +70,30 @@ public static void encode(XdrDataOutputStream stream, AccountFlags value) throws public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AccountFlags fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AccountFlags fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/AccountID.java b/src/main/java/org/stellar/sdk/xdr/AccountID.java index 25f5a81a4..1dfed5969 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountID.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountID.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,4 +62,30 @@ public boolean equals(Object object) { AccountID other = (AccountID) object; return Objects.equal(this.AccountID, other.AccountID); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AccountID fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AccountID fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/AccountMergeResult.java b/src/main/java/org/stellar/sdk/xdr/AccountMergeResult.java index d9aa45f26..84564a788 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountMergeResult.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountMergeResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -129,4 +132,30 @@ public boolean equals(Object object) { return Objects.equal(this.sourceAccountBalance, other.sourceAccountBalance) && Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AccountMergeResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AccountMergeResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/AccountMergeResultCode.java b/src/main/java/org/stellar/sdk/xdr/AccountMergeResultCode.java index 837c6cd65..9400e622c 100644 --- a/src/main/java/org/stellar/sdk/xdr/AccountMergeResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/AccountMergeResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -77,4 +80,30 @@ public static void encode(XdrDataOutputStream stream, AccountMergeResultCode val public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AccountMergeResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AccountMergeResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/AllowTrustOp.java b/src/main/java/org/stellar/sdk/xdr/AllowTrustOp.java index d47b32de6..c2a66a639 100644 --- a/src/main/java/org/stellar/sdk/xdr/AllowTrustOp.java +++ b/src/main/java/org/stellar/sdk/xdr/AllowTrustOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -89,6 +92,32 @@ public boolean equals(Object object) { && Objects.equal(this.authorize, other.authorize); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AllowTrustOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AllowTrustOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID trustor; private AssetCode asset; diff --git a/src/main/java/org/stellar/sdk/xdr/AllowTrustResult.java b/src/main/java/org/stellar/sdk/xdr/AllowTrustResult.java index def5ef34d..ee87de8c3 100644 --- a/src/main/java/org/stellar/sdk/xdr/AllowTrustResult.java +++ b/src/main/java/org/stellar/sdk/xdr/AllowTrustResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -106,4 +109,30 @@ public boolean equals(Object object) { AllowTrustResult other = (AllowTrustResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AllowTrustResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AllowTrustResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/AllowTrustResultCode.java b/src/main/java/org/stellar/sdk/xdr/AllowTrustResultCode.java index 350ea0076..3f33db982 100644 --- a/src/main/java/org/stellar/sdk/xdr/AllowTrustResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/AllowTrustResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -74,4 +77,30 @@ public static void encode(XdrDataOutputStream stream, AllowTrustResultCode value public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AllowTrustResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AllowTrustResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/AlphaNum12.java b/src/main/java/org/stellar/sdk/xdr/AlphaNum12.java index 87573ea1b..b86dd0dc2 100644 --- a/src/main/java/org/stellar/sdk/xdr/AlphaNum12.java +++ b/src/main/java/org/stellar/sdk/xdr/AlphaNum12.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -73,6 +76,32 @@ public boolean equals(Object object) { && Objects.equal(this.issuer, other.issuer); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AlphaNum12 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AlphaNum12 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AssetCode12 assetCode; private AccountID issuer; diff --git a/src/main/java/org/stellar/sdk/xdr/AlphaNum4.java b/src/main/java/org/stellar/sdk/xdr/AlphaNum4.java index 2b8110bff..4d981dd1d 100644 --- a/src/main/java/org/stellar/sdk/xdr/AlphaNum4.java +++ b/src/main/java/org/stellar/sdk/xdr/AlphaNum4.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -73,6 +76,32 @@ public boolean equals(Object object) { && Objects.equal(this.issuer, other.issuer); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AlphaNum4 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AlphaNum4 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AssetCode4 assetCode; private AccountID issuer; diff --git a/src/main/java/org/stellar/sdk/xdr/Asset.java b/src/main/java/org/stellar/sdk/xdr/Asset.java index 02c6dd642..20594ea09 100644 --- a/src/main/java/org/stellar/sdk/xdr/Asset.java +++ b/src/main/java/org/stellar/sdk/xdr/Asset.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -140,4 +143,30 @@ public boolean equals(Object object) { && Objects.equal(this.alphaNum12, other.alphaNum12) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Asset fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Asset fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/AssetCode.java b/src/main/java/org/stellar/sdk/xdr/AssetCode.java index cbc64cfc3..3f1675d11 100644 --- a/src/main/java/org/stellar/sdk/xdr/AssetCode.java +++ b/src/main/java/org/stellar/sdk/xdr/AssetCode.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -134,4 +137,30 @@ public boolean equals(Object object) { && Objects.equal(this.assetCode12, other.assetCode12) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AssetCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AssetCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/AssetCode12.java b/src/main/java/org/stellar/sdk/xdr/AssetCode12.java index 04567eb0d..887725fe2 100644 --- a/src/main/java/org/stellar/sdk/xdr/AssetCode12.java +++ b/src/main/java/org/stellar/sdk/xdr/AssetCode12.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -62,4 +65,30 @@ public boolean equals(Object object) { AssetCode12 other = (AssetCode12) object; return Arrays.equals(this.AssetCode12, other.AssetCode12); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AssetCode12 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AssetCode12 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/AssetCode4.java b/src/main/java/org/stellar/sdk/xdr/AssetCode4.java index 306d2030a..8b8643cff 100644 --- a/src/main/java/org/stellar/sdk/xdr/AssetCode4.java +++ b/src/main/java/org/stellar/sdk/xdr/AssetCode4.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -62,4 +65,30 @@ public boolean equals(Object object) { AssetCode4 other = (AssetCode4) object; return Arrays.equals(this.AssetCode4, other.AssetCode4); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AssetCode4 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AssetCode4 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/AssetType.java b/src/main/java/org/stellar/sdk/xdr/AssetType.java index 15777e107..fafca9365 100644 --- a/src/main/java/org/stellar/sdk/xdr/AssetType.java +++ b/src/main/java/org/stellar/sdk/xdr/AssetType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -57,4 +60,30 @@ public static void encode(XdrDataOutputStream stream, AssetType value) throws IO public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AssetType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AssetType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Auth.java b/src/main/java/org/stellar/sdk/xdr/Auth.java index 4322bd92d..42b03842d 100644 --- a/src/main/java/org/stellar/sdk/xdr/Auth.java +++ b/src/main/java/org/stellar/sdk/xdr/Auth.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -58,6 +61,32 @@ public boolean equals(Object object) { return Objects.equal(this.flags, other.flags); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Auth fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Auth fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Integer flags; diff --git a/src/main/java/org/stellar/sdk/xdr/AuthCert.java b/src/main/java/org/stellar/sdk/xdr/AuthCert.java index 4de722778..5d5482b8e 100644 --- a/src/main/java/org/stellar/sdk/xdr/AuthCert.java +++ b/src/main/java/org/stellar/sdk/xdr/AuthCert.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -87,6 +90,32 @@ public boolean equals(Object object) { && Objects.equal(this.sig, other.sig); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AuthCert fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AuthCert fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Curve25519Public pubkey; private Uint64 expiration; diff --git a/src/main/java/org/stellar/sdk/xdr/AuthenticatedMessage.java b/src/main/java/org/stellar/sdk/xdr/AuthenticatedMessage.java index 7289d31e0..49cff396a 100644 --- a/src/main/java/org/stellar/sdk/xdr/AuthenticatedMessage.java +++ b/src/main/java/org/stellar/sdk/xdr/AuthenticatedMessage.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -112,7 +115,33 @@ public boolean equals(Object object) { return Objects.equal(this.v0, other.v0) && Objects.equal(this.v, other.v); } - public static class AuthenticatedMessageV0 { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AuthenticatedMessage fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AuthenticatedMessage fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class AuthenticatedMessageV0 implements XdrElement { public AuthenticatedMessageV0() {} private Uint64 sequence; @@ -182,6 +211,32 @@ public boolean equals(Object object) { && Objects.equal(this.mac, other.mac); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static AuthenticatedMessageV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static AuthenticatedMessageV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint64 sequence; private StellarMessage message; diff --git a/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesOp.java b/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesOp.java index 0f0053e49..2213e8288 100644 --- a/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesOp.java +++ b/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -63,6 +66,32 @@ public boolean equals(Object object) { return Objects.equal(this.sponsoredID, other.sponsoredID); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static BeginSponsoringFutureReservesOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static BeginSponsoringFutureReservesOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID sponsoredID; diff --git a/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResult.java b/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResult.java index aea6d1dd9..0fb172a4d 100644 --- a/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResult.java +++ b/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -103,4 +106,31 @@ public boolean equals(Object object) { BeginSponsoringFutureReservesResult other = (BeginSponsoringFutureReservesResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static BeginSponsoringFutureReservesResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static BeginSponsoringFutureReservesResult fromXdrByteArray(byte[] xdr) + throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResultCode.java b/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResultCode.java index c7c0cda1c..96c2e7487 100644 --- a/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/BeginSponsoringFutureReservesResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -63,4 +66,32 @@ public static void encode( public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static BeginSponsoringFutureReservesResultCode fromXdrBase64(String xdr) + throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static BeginSponsoringFutureReservesResultCode fromXdrByteArray(byte[] xdr) + throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/BucketEntry.java b/src/main/java/org/stellar/sdk/xdr/BucketEntry.java index 1db3f00e3..6305c02d8 100644 --- a/src/main/java/org/stellar/sdk/xdr/BucketEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/BucketEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -161,4 +164,30 @@ public boolean equals(Object object) { && Objects.equal(this.metaEntry, other.metaEntry) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static BucketEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static BucketEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/BucketEntryType.java b/src/main/java/org/stellar/sdk/xdr/BucketEntryType.java index ae31ea954..273a4a792 100644 --- a/src/main/java/org/stellar/sdk/xdr/BucketEntryType.java +++ b/src/main/java/org/stellar/sdk/xdr/BucketEntryType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,4 +62,30 @@ public static void encode(XdrDataOutputStream stream, BucketEntryType value) thr public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static BucketEntryType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static BucketEntryType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/BucketMetadata.java b/src/main/java/org/stellar/sdk/xdr/BucketMetadata.java index 7fc95ff7e..1d2b37bf6 100644 --- a/src/main/java/org/stellar/sdk/xdr/BucketMetadata.java +++ b/src/main/java/org/stellar/sdk/xdr/BucketMetadata.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -81,6 +84,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static BucketMetadata fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static BucketMetadata fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 ledgerVersion; private BucketMetadataExt ext; @@ -103,7 +132,7 @@ public BucketMetadata build() { } } - public static class BucketMetadataExt { + public static class BucketMetadataExt implements XdrElement { public BucketMetadataExt() {} Integer v; @@ -171,5 +200,31 @@ public boolean equals(Object object) { BucketMetadataExt other = (BucketMetadataExt) object; return Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static BucketMetadataExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static BucketMetadataExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationOp.java b/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationOp.java index 5ba718eba..2c396ac27 100644 --- a/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationOp.java +++ b/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -74,6 +77,32 @@ public boolean equals(Object object) { && Objects.equal(this.ledgersToExpire, other.ledgersToExpire); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static BumpFootprintExpirationOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static BumpFootprintExpirationOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ExtensionPoint ext; private Uint32 ledgersToExpire; diff --git a/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResult.java b/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResult.java index 286820801..38b943184 100644 --- a/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResult.java +++ b/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -98,4 +101,30 @@ public boolean equals(Object object) { BumpFootprintExpirationResult other = (BumpFootprintExpirationResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static BumpFootprintExpirationResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static BumpFootprintExpirationResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResultCode.java b/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResultCode.java index 8e33eae94..15366d027 100644 --- a/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/BumpFootprintExpirationResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -58,4 +61,30 @@ public static void encode(XdrDataOutputStream stream, BumpFootprintExpirationRes public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static BumpFootprintExpirationResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static BumpFootprintExpirationResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/BumpSequenceOp.java b/src/main/java/org/stellar/sdk/xdr/BumpSequenceOp.java index 42f7ebb27..73d3bc385 100644 --- a/src/main/java/org/stellar/sdk/xdr/BumpSequenceOp.java +++ b/src/main/java/org/stellar/sdk/xdr/BumpSequenceOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,6 +62,32 @@ public boolean equals(Object object) { return Objects.equal(this.bumpTo, other.bumpTo); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static BumpSequenceOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static BumpSequenceOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SequenceNumber bumpTo; diff --git a/src/main/java/org/stellar/sdk/xdr/BumpSequenceResult.java b/src/main/java/org/stellar/sdk/xdr/BumpSequenceResult.java index bda89846d..9e9dbd2ad 100644 --- a/src/main/java/org/stellar/sdk/xdr/BumpSequenceResult.java +++ b/src/main/java/org/stellar/sdk/xdr/BumpSequenceResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -91,4 +94,30 @@ public boolean equals(Object object) { BumpSequenceResult other = (BumpSequenceResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static BumpSequenceResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static BumpSequenceResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/BumpSequenceResultCode.java b/src/main/java/org/stellar/sdk/xdr/BumpSequenceResultCode.java index f2863fd71..a19bf8d67 100644 --- a/src/main/java/org/stellar/sdk/xdr/BumpSequenceResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/BumpSequenceResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -52,4 +55,30 @@ public static void encode(XdrDataOutputStream stream, BumpSequenceResultCode val public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static BumpSequenceResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static BumpSequenceResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ChangeTrustAsset.java b/src/main/java/org/stellar/sdk/xdr/ChangeTrustAsset.java index 3429e5e17..d9bbfa9bf 100644 --- a/src/main/java/org/stellar/sdk/xdr/ChangeTrustAsset.java +++ b/src/main/java/org/stellar/sdk/xdr/ChangeTrustAsset.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -168,4 +171,30 @@ public boolean equals(Object object) { && Objects.equal(this.liquidityPool, other.liquidityPool) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ChangeTrustAsset fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ChangeTrustAsset fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ChangeTrustOp.java b/src/main/java/org/stellar/sdk/xdr/ChangeTrustOp.java index 796155609..2bf7124f2 100644 --- a/src/main/java/org/stellar/sdk/xdr/ChangeTrustOp.java +++ b/src/main/java/org/stellar/sdk/xdr/ChangeTrustOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -74,6 +77,32 @@ public boolean equals(Object object) { return Objects.equal(this.line, other.line) && Objects.equal(this.limit, other.limit); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ChangeTrustOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ChangeTrustOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ChangeTrustAsset line; private Int64 limit; diff --git a/src/main/java/org/stellar/sdk/xdr/ChangeTrustResult.java b/src/main/java/org/stellar/sdk/xdr/ChangeTrustResult.java index 1b4b2671b..09215f4a3 100644 --- a/src/main/java/org/stellar/sdk/xdr/ChangeTrustResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ChangeTrustResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -112,4 +115,30 @@ public boolean equals(Object object) { ChangeTrustResult other = (ChangeTrustResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ChangeTrustResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ChangeTrustResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ChangeTrustResultCode.java b/src/main/java/org/stellar/sdk/xdr/ChangeTrustResultCode.java index 3cd497a15..97423b061 100644 --- a/src/main/java/org/stellar/sdk/xdr/ChangeTrustResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ChangeTrustResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -84,4 +87,30 @@ public static void encode(XdrDataOutputStream stream, ChangeTrustResultCode valu public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ChangeTrustResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ChangeTrustResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimAtom.java b/src/main/java/org/stellar/sdk/xdr/ClaimAtom.java index be5afcca3..1ebc0f6dc 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimAtom.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimAtom.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -157,4 +160,30 @@ public boolean equals(Object object) { && Objects.equal(this.liquidityPool, other.liquidityPool) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimAtom fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimAtom fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimAtomType.java b/src/main/java/org/stellar/sdk/xdr/ClaimAtomType.java index cabffa386..282762069 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimAtomType.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimAtomType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -53,4 +56,30 @@ public static void encode(XdrDataOutputStream stream, ClaimAtomType value) throw public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimAtomType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimAtomType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceOp.java b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceOp.java index 295b81f79..86bccbc3c 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceOp.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -60,6 +63,32 @@ public boolean equals(Object object) { return Objects.equal(this.balanceID, other.balanceID); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimClaimableBalanceOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimClaimableBalanceOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ClaimableBalanceID balanceID; diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResult.java b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResult.java index 2d14c10de..749857b86 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -105,4 +108,30 @@ public boolean equals(Object object) { ClaimClaimableBalanceResult other = (ClaimClaimableBalanceResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimClaimableBalanceResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimClaimableBalanceResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResultCode.java b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResultCode.java index 64d4ad25a..5a6521eed 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -67,4 +70,30 @@ public static void encode(XdrDataOutputStream stream, ClaimClaimableBalanceResul public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimClaimableBalanceResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimClaimableBalanceResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimLiquidityAtom.java b/src/main/java/org/stellar/sdk/xdr/ClaimLiquidityAtom.java index 388799459..e03acda88 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimLiquidityAtom.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimLiquidityAtom.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -120,6 +123,32 @@ public boolean equals(Object object) { && Objects.equal(this.amountBought, other.amountBought); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimLiquidityAtom fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimLiquidityAtom fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private PoolID liquidityPoolID; private Asset assetSold; diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtom.java b/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtom.java index 7010f3c86..c379e7d9a 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtom.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtom.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -140,6 +143,32 @@ public boolean equals(Object object) { && Objects.equal(this.amountBought, other.amountBought); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimOfferAtom fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimOfferAtom fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID sellerID; private Int64 offerID; diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtomV0.java b/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtomV0.java index 649135d75..aa3e635f6 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtomV0.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimOfferAtomV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -140,6 +143,32 @@ public boolean equals(Object object) { && Objects.equal(this.amountBought, other.amountBought); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimOfferAtomV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimOfferAtomV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint256 sellerEd25519; private Int64 offerID; diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimPredicate.java b/src/main/java/org/stellar/sdk/xdr/ClaimPredicate.java index 84da08ecb..43e58652a 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimPredicate.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimPredicate.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -247,4 +250,30 @@ public boolean equals(Object object) { && Objects.equal(this.relBefore, other.relBefore) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimPredicate fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimPredicate fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimPredicateType.java b/src/main/java/org/stellar/sdk/xdr/ClaimPredicateType.java index 1896dfaa2..bbd4e3db1 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimPredicateType.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimPredicateType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -66,4 +69,30 @@ public static void encode(XdrDataOutputStream stream, ClaimPredicateType value) public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimPredicateType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimPredicateType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntry.java b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntry.java index 13f57ae2f..54ab38357 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -142,6 +145,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimableBalanceEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimableBalanceEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ClaimableBalanceID balanceID; private Claimant[] claimants; @@ -185,7 +214,7 @@ public ClaimableBalanceEntry build() { } } - public static class ClaimableBalanceEntryExt { + public static class ClaimableBalanceEntryExt implements XdrElement { public ClaimableBalanceEntryExt() {} Integer v; @@ -277,5 +306,31 @@ public boolean equals(Object object) { ClaimableBalanceEntryExt other = (ClaimableBalanceEntryExt) object; return Objects.equal(this.v1, other.v1) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimableBalanceEntryExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimableBalanceEntryExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntryExtensionV1.java b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntryExtensionV1.java index 44dcd484c..0ef0744c0 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntryExtensionV1.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceEntryExtensionV1.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -83,6 +86,32 @@ public boolean equals(Object object) { return Objects.equal(this.ext, other.ext) && Objects.equal(this.flags, other.flags); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimableBalanceEntryExtensionV1 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimableBalanceEntryExtensionV1 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ClaimableBalanceEntryExtensionV1Ext ext; private Uint32 flags; @@ -105,7 +134,7 @@ public ClaimableBalanceEntryExtensionV1 build() { } } - public static class ClaimableBalanceEntryExtensionV1Ext { + public static class ClaimableBalanceEntryExtensionV1Ext implements XdrElement { public ClaimableBalanceEntryExtensionV1Ext() {} Integer v; @@ -177,5 +206,32 @@ public boolean equals(Object object) { ClaimableBalanceEntryExtensionV1Ext other = (ClaimableBalanceEntryExtensionV1Ext) object; return Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimableBalanceEntryExtensionV1Ext fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimableBalanceEntryExtensionV1Ext fromXdrByteArray(byte[] xdr) + throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceFlags.java b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceFlags.java index 11b85d6f0..5958a0162 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceFlags.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceFlags.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -48,4 +51,30 @@ public static void encode(XdrDataOutputStream stream, ClaimableBalanceFlags valu public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimableBalanceFlags fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimableBalanceFlags fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceID.java b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceID.java index 7fc4f4d8e..53bb5bdc0 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceID.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceID.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -104,4 +107,30 @@ public boolean equals(Object object) { ClaimableBalanceID other = (ClaimableBalanceID) object; return Objects.equal(this.v0, other.v0) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimableBalanceID fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimableBalanceID fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceIDType.java b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceIDType.java index df62c8154..80e989b58 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceIDType.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimableBalanceIDType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -46,4 +49,30 @@ public static void encode(XdrDataOutputStream stream, ClaimableBalanceIDType val public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimableBalanceIDType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimableBalanceIDType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Claimant.java b/src/main/java/org/stellar/sdk/xdr/Claimant.java index df2334477..dc797111e 100644 --- a/src/main/java/org/stellar/sdk/xdr/Claimant.java +++ b/src/main/java/org/stellar/sdk/xdr/Claimant.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -109,7 +112,33 @@ public boolean equals(Object object) { return Objects.equal(this.v0, other.v0) && Objects.equal(this.type, other.type); } - public static class ClaimantV0 { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Claimant fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Claimant fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class ClaimantV0 implements XdrElement { public ClaimantV0() {} private AccountID destination; @@ -165,6 +194,32 @@ public boolean equals(Object object) { && Objects.equal(this.predicate, other.predicate); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimantV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimantV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID destination; private ClaimPredicate predicate; diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimantType.java b/src/main/java/org/stellar/sdk/xdr/ClaimantType.java index cc0eed652..3432fcd00 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimantType.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimantType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -45,4 +48,30 @@ public static void encode(XdrDataOutputStream stream, ClaimantType value) throws public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClaimantType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClaimantType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceOp.java b/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceOp.java index 4fdcf6b9e..900d16622 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceOp.java +++ b/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -60,6 +63,32 @@ public boolean equals(Object object) { return Objects.equal(this.balanceID, other.balanceID); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClawbackClaimableBalanceOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClawbackClaimableBalanceOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ClaimableBalanceID balanceID; diff --git a/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResult.java b/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResult.java index 97dcbad82..162b55f42 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -103,4 +106,30 @@ public boolean equals(Object object) { ClawbackClaimableBalanceResult other = (ClawbackClaimableBalanceResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClawbackClaimableBalanceResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClawbackClaimableBalanceResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResultCode.java b/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResultCode.java index cd14746a6..04d2014a7 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ClawbackClaimableBalanceResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -62,4 +65,30 @@ public static void encode(XdrDataOutputStream stream, ClawbackClaimableBalanceRe public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClawbackClaimableBalanceResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClawbackClaimableBalanceResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClawbackOp.java b/src/main/java/org/stellar/sdk/xdr/ClawbackOp.java index 3ba348c99..44a9e7528 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClawbackOp.java +++ b/src/main/java/org/stellar/sdk/xdr/ClawbackOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -87,6 +90,32 @@ public boolean equals(Object object) { && Objects.equal(this.amount, other.amount); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClawbackOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClawbackOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Asset asset; private MuxedAccount from; diff --git a/src/main/java/org/stellar/sdk/xdr/ClawbackResult.java b/src/main/java/org/stellar/sdk/xdr/ClawbackResult.java index d228e8931..53c2c8df3 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClawbackResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ClawbackResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -100,4 +103,30 @@ public boolean equals(Object object) { ClawbackResult other = (ClawbackResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClawbackResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClawbackResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ClawbackResultCode.java b/src/main/java/org/stellar/sdk/xdr/ClawbackResultCode.java index bb0ad1406..1aee628e5 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClawbackResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ClawbackResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -65,4 +68,30 @@ public static void encode(XdrDataOutputStream stream, ClawbackResultCode value) public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ClawbackResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ClawbackResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractBandwidthV0.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractBandwidthV0.java index 91a6ab982..fd67a882e 100644 --- a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractBandwidthV0.java +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractBandwidthV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -96,6 +99,32 @@ public boolean equals(Object object) { && Objects.equal(this.feePropagateData1KB, other.feePropagateData1KB); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ConfigSettingContractBandwidthV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ConfigSettingContractBandwidthV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 ledgerMaxPropagateSizeBytes; private Uint32 txMaxSizeBytes; diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractComputeV0.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractComputeV0.java index b0b77fc96..cf721573f 100644 --- a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractComputeV0.java +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractComputeV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -116,6 +119,32 @@ public boolean equals(Object object) { && Objects.equal(this.txMemoryLimit, other.txMemoryLimit); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ConfigSettingContractComputeV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ConfigSettingContractComputeV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Int64 ledgerMaxInstructions; private Int64 txMaxInstructions; diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractExecutionLanesV0.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractExecutionLanesV0.java index be130f4d2..4e695c2a3 100644 --- a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractExecutionLanesV0.java +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractExecutionLanesV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -64,6 +67,33 @@ public boolean equals(Object object) { return Objects.equal(this.ledgerMaxTxCount, other.ledgerMaxTxCount); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ConfigSettingContractExecutionLanesV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ConfigSettingContractExecutionLanesV0 fromXdrByteArray(byte[] xdr) + throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 ledgerMaxTxCount; diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractHistoricalDataV0.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractHistoricalDataV0.java index 630a5a83c..fe42e4b53 100644 --- a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractHistoricalDataV0.java +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractHistoricalDataV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -63,6 +66,33 @@ public boolean equals(Object object) { return Objects.equal(this.feeHistorical1KB, other.feeHistorical1KB); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ConfigSettingContractHistoricalDataV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ConfigSettingContractHistoricalDataV0 fromXdrByteArray(byte[] xdr) + throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Int64 feeHistorical1KB; diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractLedgerCostV0.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractLedgerCostV0.java index 51abdb861..8880a5582 100644 --- a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractLedgerCostV0.java +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractLedgerCostV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -305,6 +308,32 @@ public boolean equals(Object object) { && Objects.equal(this.bucketListGrowthFactor, other.bucketListGrowthFactor); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ConfigSettingContractLedgerCostV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ConfigSettingContractLedgerCostV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 ledgerMaxReadLedgerEntries; private Uint32 ledgerMaxReadBytes; diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractMetaDataV0.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractMetaDataV0.java index cef7eb792..3d17551d7 100644 --- a/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractMetaDataV0.java +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingContractMetaDataV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -79,6 +82,32 @@ public boolean equals(Object object) { && Objects.equal(this.feeExtendedMetaData1KB, other.feeExtendedMetaData1KB); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ConfigSettingContractMetaDataV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ConfigSettingContractMetaDataV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 txMaxExtendedMetaDataSizeBytes; private Int64 feeExtendedMetaData1KB; diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingEntry.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingEntry.java index 0ca29091d..2a576ebe9 100644 --- a/src/main/java/org/stellar/sdk/xdr/ConfigSettingEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -450,4 +453,30 @@ public boolean equals(Object object) { && Arrays.equals(this.bucketListSizeWindow, other.bucketListSizeWindow) && Objects.equal(this.configSettingID, other.configSettingID); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ConfigSettingEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ConfigSettingEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingID.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingID.java index 1f45b8766..7cd979a66 100644 --- a/src/main/java/org/stellar/sdk/xdr/ConfigSettingID.java +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingID.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -93,4 +96,30 @@ public static void encode(XdrDataOutputStream stream, ConfigSettingID value) thr public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ConfigSettingID fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ConfigSettingID fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSet.java b/src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSet.java index ff18850cf..35f990000 100644 --- a/src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSet.java +++ b/src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSet.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -66,6 +69,32 @@ public boolean equals(Object object) { return Arrays.equals(this.updatedEntry, other.updatedEntry); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ConfigUpgradeSet fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ConfigUpgradeSet fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ConfigSettingEntry[] updatedEntry; diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSetKey.java b/src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSetKey.java index bb24fa626..0d10ff674 100644 --- a/src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSetKey.java +++ b/src/main/java/org/stellar/sdk/xdr/ConfigUpgradeSetKey.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -73,6 +76,32 @@ public boolean equals(Object object) { && Objects.equal(this.contentHash, other.contentHash); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ConfigUpgradeSetKey fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ConfigUpgradeSetKey fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Hash contractID; private Hash contentHash; diff --git a/src/main/java/org/stellar/sdk/xdr/Constants.java b/src/main/java/org/stellar/sdk/xdr/Constants.java index 2438dd144..60813b258 100644 --- a/src/main/java/org/stellar/sdk/xdr/Constants.java +++ b/src/main/java/org/stellar/sdk/xdr/Constants.java @@ -6,9 +6,6 @@ public final class Constants { private Constants() {} - public static final int CONTRACT_COST_COUNT_LIMIT = 1024; - public static final int SC_SPEC_DOC_LIMIT = 1024; - public static final int SCSYMBOL_LIMIT = 32; public static final int MASK_ACCOUNT_FLAGS = 0x7; public static final int MASK_ACCOUNT_FLAGS_V17 = 0xF; public static final int MAX_SIGNERS = 20; @@ -24,4 +21,7 @@ private Constants() {} public static final int TX_DEMAND_VECTOR_MAX_SIZE = 1000; public static final int MAX_OPS_PER_TX = 100; public static final int LIQUIDITY_POOL_FEE_V18 = 30; + public static final int SC_SPEC_DOC_LIMIT = 1024; + public static final int SCSYMBOL_LIMIT = 32; + public static final int CONTRACT_COST_COUNT_LIMIT = 1024; } diff --git a/src/main/java/org/stellar/sdk/xdr/ContractCodeEntry.java b/src/main/java/org/stellar/sdk/xdr/ContractCodeEntry.java index 74fdc6cd2..0035614b0 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractCodeEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractCodeEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -109,6 +112,32 @@ public boolean equals(Object object) { && Objects.equal(this.expirationLedgerSeq, other.expirationLedgerSeq); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractCodeEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractCodeEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ExtensionPoint ext; private Hash hash; @@ -145,7 +174,7 @@ public ContractCodeEntry build() { } } - public static class ContractCodeEntryBody { + public static class ContractCodeEntryBody implements XdrElement { public ContractCodeEntryBody() {} ContractEntryBodyType bodyType; @@ -241,5 +270,31 @@ public boolean equals(Object object) { ContractCodeEntryBody other = (ContractCodeEntryBody) object; return Arrays.equals(this.code, other.code) && Objects.equal(this.bodyType, other.bodyType); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractCodeEntryBody fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractCodeEntryBody fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/ContractCostParamEntry.java b/src/main/java/org/stellar/sdk/xdr/ContractCostParamEntry.java index 4be8af934..062868a05 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractCostParamEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractCostParamEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -89,6 +92,32 @@ public boolean equals(Object object) { && Objects.equal(this.linearTerm, other.linearTerm); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractCostParamEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractCostParamEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ExtensionPoint ext; private Int64 constTerm; diff --git a/src/main/java/org/stellar/sdk/xdr/ContractCostParams.java b/src/main/java/org/stellar/sdk/xdr/ContractCostParams.java index 033bad8d9..4c5654b11 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractCostParams.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractCostParams.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -68,4 +71,30 @@ public boolean equals(Object object) { ContractCostParams other = (ContractCostParams) object; return Arrays.equals(this.ContractCostParams, other.ContractCostParams); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractCostParams fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractCostParams fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ContractCostType.java b/src/main/java/org/stellar/sdk/xdr/ContractCostType.java index 3752a793d..645779b4a 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractCostType.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractCostType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -200,4 +203,30 @@ public static void encode(XdrDataOutputStream stream, ContractCostType value) th public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractCostType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractCostType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ContractDataDurability.java b/src/main/java/org/stellar/sdk/xdr/ContractDataDurability.java index 992ecab54..a286b47a9 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractDataDurability.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractDataDurability.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -49,4 +52,30 @@ public static void encode(XdrDataOutputStream stream, ContractDataDurability val public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractDataDurability fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractDataDurability fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ContractDataEntry.java b/src/main/java/org/stellar/sdk/xdr/ContractDataEntry.java index 18c5ac90b..e6e3e82b3 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractDataEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractDataEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -127,6 +130,32 @@ public boolean equals(Object object) { && Objects.equal(this.expirationLedgerSeq, other.expirationLedgerSeq); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractDataEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractDataEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCAddress contract; private SCVal key; @@ -170,7 +199,7 @@ public ContractDataEntry build() { } } - public static class ContractDataEntryBody { + public static class ContractDataEntryBody implements XdrElement { public ContractDataEntryBody() {} ContractEntryBodyType bodyType; @@ -263,7 +292,33 @@ public boolean equals(Object object) { return Objects.equal(this.data, other.data) && Objects.equal(this.bodyType, other.bodyType); } - public static class ContractDataEntryData { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractDataEntryBody fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractDataEntryBody fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class ContractDataEntryData implements XdrElement { public ContractDataEntryData() {} private Uint32 flags; @@ -319,6 +374,32 @@ public boolean equals(Object object) { return Objects.equal(this.flags, other.flags) && Objects.equal(this.val, other.val); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractDataEntryData fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractDataEntryData fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 flags; private SCVal val; diff --git a/src/main/java/org/stellar/sdk/xdr/ContractDataFlags.java b/src/main/java/org/stellar/sdk/xdr/ContractDataFlags.java index f1871f5ee..0e20ed10a 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractDataFlags.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractDataFlags.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -47,4 +50,30 @@ public static void encode(XdrDataOutputStream stream, ContractDataFlags value) public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractDataFlags fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractDataFlags fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ContractEntryBodyType.java b/src/main/java/org/stellar/sdk/xdr/ContractEntryBodyType.java index eae02b395..9bf5b1f89 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractEntryBodyType.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractEntryBodyType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -49,4 +52,30 @@ public static void encode(XdrDataOutputStream stream, ContractEntryBodyType valu public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractEntryBodyType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractEntryBodyType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ContractEvent.java b/src/main/java/org/stellar/sdk/xdr/ContractEvent.java index 3b9c703b2..5bc8e9287 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractEvent.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractEvent.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -122,6 +125,32 @@ public boolean equals(Object object) { && Objects.equal(this.body, other.body); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractEvent fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractEvent fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ExtensionPoint ext; private Hash contractID; @@ -158,7 +187,7 @@ public ContractEvent build() { } } - public static class ContractEventBody { + public static class ContractEventBody implements XdrElement { public ContractEventBody() {} Integer v; @@ -246,7 +275,33 @@ public boolean equals(Object object) { return Objects.equal(this.v0, other.v0) && Objects.equal(this.v, other.v); } - public static class ContractEventV0 { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractEventBody fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractEventBody fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class ContractEventV0 implements XdrElement { public ContractEventV0() {} private SCVec topics; @@ -301,6 +356,32 @@ public boolean equals(Object object) { return Objects.equal(this.topics, other.topics) && Objects.equal(this.data, other.data); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractEventV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractEventV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCVec topics; private SCVal data; diff --git a/src/main/java/org/stellar/sdk/xdr/ContractEventType.java b/src/main/java/org/stellar/sdk/xdr/ContractEventType.java index ce50fbafb..19adb659c 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractEventType.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractEventType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -54,4 +57,30 @@ public static void encode(XdrDataOutputStream stream, ContractEventType value) public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractEventType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractEventType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ContractExecutable.java b/src/main/java/org/stellar/sdk/xdr/ContractExecutable.java index ef40b3766..889f9274f 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractExecutable.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractExecutable.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -110,4 +113,30 @@ public boolean equals(Object object) { ContractExecutable other = (ContractExecutable) object; return Objects.equal(this.wasm_hash, other.wasm_hash) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractExecutable fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractExecutable fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ContractExecutableType.java b/src/main/java/org/stellar/sdk/xdr/ContractExecutableType.java index 5689b059f..4670c06ed 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractExecutableType.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractExecutableType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -50,4 +53,30 @@ public static void encode(XdrDataOutputStream stream, ContractExecutableType val public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractExecutableType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractExecutableType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ContractIDPreimage.java b/src/main/java/org/stellar/sdk/xdr/ContractIDPreimage.java index 72f2ceecb..b264111c9 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractIDPreimage.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractIDPreimage.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -136,7 +139,33 @@ public boolean equals(Object object) { && Objects.equal(this.type, other.type); } - public static class ContractIDPreimageFromAddress { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractIDPreimage fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractIDPreimage fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class ContractIDPreimageFromAddress implements XdrElement { public ContractIDPreimageFromAddress() {} private SCAddress address; @@ -195,6 +224,32 @@ public boolean equals(Object object) { return Objects.equal(this.address, other.address) && Objects.equal(this.salt, other.salt); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractIDPreimageFromAddress fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractIDPreimageFromAddress fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCAddress address; private Uint256 salt; diff --git a/src/main/java/org/stellar/sdk/xdr/ContractIDPreimageType.java b/src/main/java/org/stellar/sdk/xdr/ContractIDPreimageType.java index af4ba33b2..ef49dd359 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractIDPreimageType.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractIDPreimageType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -50,4 +53,30 @@ public static void encode(XdrDataOutputStream stream, ContractIDPreimageType val public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ContractIDPreimageType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ContractIDPreimageType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/CreateAccountOp.java b/src/main/java/org/stellar/sdk/xdr/CreateAccountOp.java index 876177148..12ced4a18 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreateAccountOp.java +++ b/src/main/java/org/stellar/sdk/xdr/CreateAccountOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -73,6 +76,32 @@ public boolean equals(Object object) { && Objects.equal(this.startingBalance, other.startingBalance); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static CreateAccountOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static CreateAccountOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID destination; private Int64 startingBalance; diff --git a/src/main/java/org/stellar/sdk/xdr/CreateAccountResult.java b/src/main/java/org/stellar/sdk/xdr/CreateAccountResult.java index d2f106765..c4052db18 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreateAccountResult.java +++ b/src/main/java/org/stellar/sdk/xdr/CreateAccountResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -101,4 +104,30 @@ public boolean equals(Object object) { CreateAccountResult other = (CreateAccountResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static CreateAccountResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static CreateAccountResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/CreateAccountResultCode.java b/src/main/java/org/stellar/sdk/xdr/CreateAccountResultCode.java index 0af2f9d09..80356ab87 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreateAccountResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/CreateAccountResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -66,4 +69,30 @@ public static void encode(XdrDataOutputStream stream, CreateAccountResultCode va public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static CreateAccountResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static CreateAccountResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceOp.java b/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceOp.java index 27da5e9f0..fd088563d 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceOp.java +++ b/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -97,6 +100,32 @@ public boolean equals(Object object) { && Arrays.equals(this.claimants, other.claimants); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static CreateClaimableBalanceOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static CreateClaimableBalanceOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Asset asset; private Int64 amount; diff --git a/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResult.java b/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResult.java index 08cff736f..b77bcf6e6 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResult.java +++ b/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -125,4 +128,30 @@ public boolean equals(Object object) { CreateClaimableBalanceResult other = (CreateClaimableBalanceResult) object; return Objects.equal(this.balanceID, other.balanceID) && Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static CreateClaimableBalanceResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static CreateClaimableBalanceResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResultCode.java b/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResultCode.java index 99c0d7138..043255af4 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/CreateClaimableBalanceResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -67,4 +70,30 @@ public static void encode(XdrDataOutputStream stream, CreateClaimableBalanceResu public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static CreateClaimableBalanceResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static CreateClaimableBalanceResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/CreateContractArgs.java b/src/main/java/org/stellar/sdk/xdr/CreateContractArgs.java index 1d38d73e9..7caeb531e 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreateContractArgs.java +++ b/src/main/java/org/stellar/sdk/xdr/CreateContractArgs.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -73,6 +76,32 @@ public boolean equals(Object object) { && Objects.equal(this.executable, other.executable); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static CreateContractArgs fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static CreateContractArgs fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ContractIDPreimage contractIDPreimage; private ContractExecutable executable; diff --git a/src/main/java/org/stellar/sdk/xdr/CreatePassiveSellOfferOp.java b/src/main/java/org/stellar/sdk/xdr/CreatePassiveSellOfferOp.java index 2e6543775..1112b6421 100644 --- a/src/main/java/org/stellar/sdk/xdr/CreatePassiveSellOfferOp.java +++ b/src/main/java/org/stellar/sdk/xdr/CreatePassiveSellOfferOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -102,6 +105,32 @@ public boolean equals(Object object) { && Objects.equal(this.price, other.price); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static CreatePassiveSellOfferOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static CreatePassiveSellOfferOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Asset selling; private Asset buying; diff --git a/src/main/java/org/stellar/sdk/xdr/CryptoKeyType.java b/src/main/java/org/stellar/sdk/xdr/CryptoKeyType.java index bcb36cd6e..518ded557 100644 --- a/src/main/java/org/stellar/sdk/xdr/CryptoKeyType.java +++ b/src/main/java/org/stellar/sdk/xdr/CryptoKeyType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -63,4 +66,30 @@ public static void encode(XdrDataOutputStream stream, CryptoKeyType value) throw public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static CryptoKeyType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static CryptoKeyType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Curve25519Public.java b/src/main/java/org/stellar/sdk/xdr/Curve25519Public.java index 9534a1992..3e43fffed 100644 --- a/src/main/java/org/stellar/sdk/xdr/Curve25519Public.java +++ b/src/main/java/org/stellar/sdk/xdr/Curve25519Public.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -62,6 +65,32 @@ public boolean equals(Object object) { return Arrays.equals(this.key, other.key); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Curve25519Public fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Curve25519Public fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private byte[] key; diff --git a/src/main/java/org/stellar/sdk/xdr/Curve25519Secret.java b/src/main/java/org/stellar/sdk/xdr/Curve25519Secret.java index 8ca01275b..90ea87d2a 100644 --- a/src/main/java/org/stellar/sdk/xdr/Curve25519Secret.java +++ b/src/main/java/org/stellar/sdk/xdr/Curve25519Secret.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -62,6 +65,32 @@ public boolean equals(Object object) { return Arrays.equals(this.key, other.key); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Curve25519Secret fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Curve25519Secret fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private byte[] key; diff --git a/src/main/java/org/stellar/sdk/xdr/DataEntry.java b/src/main/java/org/stellar/sdk/xdr/DataEntry.java index b1faf5d7a..d00de786b 100644 --- a/src/main/java/org/stellar/sdk/xdr/DataEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/DataEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -108,6 +111,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static DataEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static DataEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID accountID; private String64 dataName; @@ -144,7 +173,7 @@ public DataEntry build() { } } - public static class DataEntryExt { + public static class DataEntryExt implements XdrElement { public DataEntryExt() {} Integer v; @@ -212,5 +241,31 @@ public boolean equals(Object object) { DataEntryExt other = (DataEntryExt) object; return Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static DataEntryExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static DataEntryExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/DataValue.java b/src/main/java/org/stellar/sdk/xdr/DataValue.java index e9ff69844..7d3e0aed6 100644 --- a/src/main/java/org/stellar/sdk/xdr/DataValue.java +++ b/src/main/java/org/stellar/sdk/xdr/DataValue.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -63,4 +66,30 @@ public boolean equals(Object object) { DataValue other = (DataValue) object; return Arrays.equals(this.DataValue, other.DataValue); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static DataValue fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static DataValue fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/DecoratedSignature.java b/src/main/java/org/stellar/sdk/xdr/DecoratedSignature.java index b522ac237..80b1728b9 100644 --- a/src/main/java/org/stellar/sdk/xdr/DecoratedSignature.java +++ b/src/main/java/org/stellar/sdk/xdr/DecoratedSignature.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -72,6 +75,32 @@ public boolean equals(Object object) { return Objects.equal(this.hint, other.hint) && Objects.equal(this.signature, other.signature); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static DecoratedSignature fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static DecoratedSignature fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SignatureHint hint; private Signature signature; diff --git a/src/main/java/org/stellar/sdk/xdr/DiagnosticEvent.java b/src/main/java/org/stellar/sdk/xdr/DiagnosticEvent.java index 9f9c3e355..735a2eddb 100644 --- a/src/main/java/org/stellar/sdk/xdr/DiagnosticEvent.java +++ b/src/main/java/org/stellar/sdk/xdr/DiagnosticEvent.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -73,6 +76,32 @@ public boolean equals(Object object) { && Objects.equal(this.event, other.event); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static DiagnosticEvent fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static DiagnosticEvent fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Boolean inSuccessfulContractCall; private ContractEvent event; diff --git a/src/main/java/org/stellar/sdk/xdr/DontHave.java b/src/main/java/org/stellar/sdk/xdr/DontHave.java index f72aeb633..2952ea1c2 100644 --- a/src/main/java/org/stellar/sdk/xdr/DontHave.java +++ b/src/main/java/org/stellar/sdk/xdr/DontHave.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -72,6 +75,32 @@ public boolean equals(Object object) { return Objects.equal(this.type, other.type) && Objects.equal(this.reqHash, other.reqHash); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static DontHave fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static DontHave fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private MessageType type; private Uint256 reqHash; diff --git a/src/main/java/org/stellar/sdk/xdr/Duration.java b/src/main/java/org/stellar/sdk/xdr/Duration.java index f71595f4b..bb740d7f9 100644 --- a/src/main/java/org/stellar/sdk/xdr/Duration.java +++ b/src/main/java/org/stellar/sdk/xdr/Duration.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,4 +62,30 @@ public boolean equals(Object object) { Duration other = (Duration) object; return Objects.equal(this.Duration, other.Duration); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Duration fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Duration fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/EncryptedBody.java b/src/main/java/org/stellar/sdk/xdr/EncryptedBody.java index 9b63a633e..980f98085 100644 --- a/src/main/java/org/stellar/sdk/xdr/EncryptedBody.java +++ b/src/main/java/org/stellar/sdk/xdr/EncryptedBody.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -63,4 +66,30 @@ public boolean equals(Object object) { EncryptedBody other = (EncryptedBody) object; return Arrays.equals(this.EncryptedBody, other.EncryptedBody); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static EncryptedBody fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static EncryptedBody fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResult.java b/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResult.java index 9b9fd0758..ed2ee43b6 100644 --- a/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResult.java +++ b/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -97,4 +100,30 @@ public boolean equals(Object object) { EndSponsoringFutureReservesResult other = (EndSponsoringFutureReservesResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static EndSponsoringFutureReservesResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static EndSponsoringFutureReservesResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResultCode.java b/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResultCode.java index 067946337..861615933 100644 --- a/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/EndSponsoringFutureReservesResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -54,4 +57,31 @@ public static void encode(XdrDataOutputStream stream, EndSponsoringFutureReserve public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static EndSponsoringFutureReservesResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static EndSponsoringFutureReservesResultCode fromXdrByteArray(byte[] xdr) + throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/EnvelopeType.java b/src/main/java/org/stellar/sdk/xdr/EnvelopeType.java index 836692826..98a9505d9 100644 --- a/src/main/java/org/stellar/sdk/xdr/EnvelopeType.java +++ b/src/main/java/org/stellar/sdk/xdr/EnvelopeType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -81,4 +84,30 @@ public static void encode(XdrDataOutputStream stream, EnvelopeType value) throws public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static EnvelopeType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static EnvelopeType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Error.java b/src/main/java/org/stellar/sdk/xdr/Error.java index 2060216b9..c1fd69dfb 100644 --- a/src/main/java/org/stellar/sdk/xdr/Error.java +++ b/src/main/java/org/stellar/sdk/xdr/Error.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -71,6 +74,32 @@ public boolean equals(Object object) { return Objects.equal(this.code, other.code) && Objects.equal(this.msg, other.msg); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Error fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Error fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ErrorCode code; private XdrString msg; diff --git a/src/main/java/org/stellar/sdk/xdr/ErrorCode.java b/src/main/java/org/stellar/sdk/xdr/ErrorCode.java index 554effd5f..b5131668f 100644 --- a/src/main/java/org/stellar/sdk/xdr/ErrorCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ErrorCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -61,4 +64,30 @@ public static void encode(XdrDataOutputStream stream, ErrorCode value) throws IO public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ErrorCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ErrorCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ExtensionPoint.java b/src/main/java/org/stellar/sdk/xdr/ExtensionPoint.java index f7a666a1a..25cd82247 100644 --- a/src/main/java/org/stellar/sdk/xdr/ExtensionPoint.java +++ b/src/main/java/org/stellar/sdk/xdr/ExtensionPoint.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -85,4 +88,30 @@ public boolean equals(Object object) { ExtensionPoint other = (ExtensionPoint) object; return Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ExtensionPoint fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ExtensionPoint fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/FeeBumpTransaction.java b/src/main/java/org/stellar/sdk/xdr/FeeBumpTransaction.java index 7698fad97..2908b9273 100644 --- a/src/main/java/org/stellar/sdk/xdr/FeeBumpTransaction.java +++ b/src/main/java/org/stellar/sdk/xdr/FeeBumpTransaction.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -111,6 +114,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static FeeBumpTransaction fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static FeeBumpTransaction fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private MuxedAccount feeSource; private Int64 fee; @@ -147,7 +176,7 @@ public FeeBumpTransaction build() { } } - public static class FeeBumpTransactionInnerTx { + public static class FeeBumpTransactionInnerTx implements XdrElement { public FeeBumpTransactionInnerTx() {} EnvelopeType type; @@ -235,9 +264,35 @@ public boolean equals(Object object) { FeeBumpTransactionInnerTx other = (FeeBumpTransactionInnerTx) object; return Objects.equal(this.v1, other.v1) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static FeeBumpTransactionInnerTx fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static FeeBumpTransactionInnerTx fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } - public static class FeeBumpTransactionExt { + public static class FeeBumpTransactionExt implements XdrElement { public FeeBumpTransactionExt() {} Integer v; @@ -306,5 +361,31 @@ public boolean equals(Object object) { FeeBumpTransactionExt other = (FeeBumpTransactionExt) object; return Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static FeeBumpTransactionExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static FeeBumpTransactionExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/FeeBumpTransactionEnvelope.java b/src/main/java/org/stellar/sdk/xdr/FeeBumpTransactionEnvelope.java index 22d3fd767..af9739bc0 100644 --- a/src/main/java/org/stellar/sdk/xdr/FeeBumpTransactionEnvelope.java +++ b/src/main/java/org/stellar/sdk/xdr/FeeBumpTransactionEnvelope.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -84,6 +87,32 @@ public boolean equals(Object object) { return Objects.equal(this.tx, other.tx) && Arrays.equals(this.signatures, other.signatures); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static FeeBumpTransactionEnvelope fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static FeeBumpTransactionEnvelope fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private FeeBumpTransaction tx; private DecoratedSignature[] signatures; diff --git a/src/main/java/org/stellar/sdk/xdr/FloodAdvert.java b/src/main/java/org/stellar/sdk/xdr/FloodAdvert.java index 22e8f8b9c..e05c9269b 100644 --- a/src/main/java/org/stellar/sdk/xdr/FloodAdvert.java +++ b/src/main/java/org/stellar/sdk/xdr/FloodAdvert.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,6 +62,32 @@ public boolean equals(Object object) { return Objects.equal(this.txHashes, other.txHashes); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static FloodAdvert fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static FloodAdvert fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private TxAdvertVector txHashes; diff --git a/src/main/java/org/stellar/sdk/xdr/FloodDemand.java b/src/main/java/org/stellar/sdk/xdr/FloodDemand.java index f21c6db2b..c7e7d231f 100644 --- a/src/main/java/org/stellar/sdk/xdr/FloodDemand.java +++ b/src/main/java/org/stellar/sdk/xdr/FloodDemand.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,6 +62,32 @@ public boolean equals(Object object) { return Objects.equal(this.txHashes, other.txHashes); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static FloodDemand fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static FloodDemand fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private TxDemandVector txHashes; diff --git a/src/main/java/org/stellar/sdk/xdr/GeneralizedTransactionSet.java b/src/main/java/org/stellar/sdk/xdr/GeneralizedTransactionSet.java index 0ea7eec2f..bf8b72417 100644 --- a/src/main/java/org/stellar/sdk/xdr/GeneralizedTransactionSet.java +++ b/src/main/java/org/stellar/sdk/xdr/GeneralizedTransactionSet.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -106,4 +109,30 @@ public boolean equals(Object object) { GeneralizedTransactionSet other = (GeneralizedTransactionSet) object; return Objects.equal(this.v1TxSet, other.v1TxSet) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static GeneralizedTransactionSet fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static GeneralizedTransactionSet fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Hash.java b/src/main/java/org/stellar/sdk/xdr/Hash.java index 9b2678c9c..f04b8343e 100644 --- a/src/main/java/org/stellar/sdk/xdr/Hash.java +++ b/src/main/java/org/stellar/sdk/xdr/Hash.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -61,4 +64,30 @@ public boolean equals(Object object) { Hash other = (Hash) object; return Arrays.equals(this.Hash, other.Hash); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Hash fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Hash fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/HashIDPreimage.java b/src/main/java/org/stellar/sdk/xdr/HashIDPreimage.java index 931f0c3f3..343874cc9 100644 --- a/src/main/java/org/stellar/sdk/xdr/HashIDPreimage.java +++ b/src/main/java/org/stellar/sdk/xdr/HashIDPreimage.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -209,7 +212,33 @@ public boolean equals(Object object) { && Objects.equal(this.type, other.type); } - public static class HashIDPreimageOperationID { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static HashIDPreimage fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static HashIDPreimage fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class HashIDPreimageOperationID implements XdrElement { public HashIDPreimageOperationID() {} private AccountID sourceAccount; @@ -279,6 +308,32 @@ public boolean equals(Object object) { && Objects.equal(this.opNum, other.opNum); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static HashIDPreimageOperationID fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static HashIDPreimageOperationID fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID sourceAccount; private SequenceNumber seqNum; @@ -309,7 +364,7 @@ public HashIDPreimageOperationID build() { } } - public static class HashIDPreimageRevokeID { + public static class HashIDPreimageRevokeID implements XdrElement { public HashIDPreimageRevokeID() {} private AccountID sourceAccount; @@ -406,6 +461,32 @@ public boolean equals(Object object) { && Objects.equal(this.asset, other.asset); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static HashIDPreimageRevokeID fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static HashIDPreimageRevokeID fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID sourceAccount; private SequenceNumber seqNum; @@ -450,7 +531,7 @@ public HashIDPreimageRevokeID build() { } } - public static class HashIDPreimageContractID { + public static class HashIDPreimageContractID implements XdrElement { public HashIDPreimageContractID() {} private Hash networkID; @@ -507,6 +588,32 @@ public boolean equals(Object object) { && Objects.equal(this.contractIDPreimage, other.contractIDPreimage); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static HashIDPreimageContractID fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static HashIDPreimageContractID fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Hash networkID; private ContractIDPreimage contractIDPreimage; @@ -530,7 +637,7 @@ public HashIDPreimageContractID build() { } } - public static class HashIDPreimageSorobanAuthorization { + public static class HashIDPreimageSorobanAuthorization implements XdrElement { public HashIDPreimageSorobanAuthorization() {} private Hash networkID; @@ -619,6 +726,33 @@ public boolean equals(Object object) { && Objects.equal(this.invocation, other.invocation); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static HashIDPreimageSorobanAuthorization fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static HashIDPreimageSorobanAuthorization fromXdrByteArray(byte[] xdr) + throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Hash networkID; private Int64 nonce; diff --git a/src/main/java/org/stellar/sdk/xdr/Hello.java b/src/main/java/org/stellar/sdk/xdr/Hello.java index f1fec50d6..e131ee4f0 100644 --- a/src/main/java/org/stellar/sdk/xdr/Hello.java +++ b/src/main/java/org/stellar/sdk/xdr/Hello.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -179,6 +182,32 @@ public boolean equals(Object object) { && Objects.equal(this.nonce, other.nonce); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Hello fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Hello fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 ledgerVersion; private Uint32 overlayVersion; diff --git a/src/main/java/org/stellar/sdk/xdr/HmacSha256Key.java b/src/main/java/org/stellar/sdk/xdr/HmacSha256Key.java index 1b84a0074..289cbf05c 100644 --- a/src/main/java/org/stellar/sdk/xdr/HmacSha256Key.java +++ b/src/main/java/org/stellar/sdk/xdr/HmacSha256Key.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -62,6 +65,32 @@ public boolean equals(Object object) { return Arrays.equals(this.key, other.key); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static HmacSha256Key fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static HmacSha256Key fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private byte[] key; diff --git a/src/main/java/org/stellar/sdk/xdr/HmacSha256Mac.java b/src/main/java/org/stellar/sdk/xdr/HmacSha256Mac.java index a24a2d717..1d361a93a 100644 --- a/src/main/java/org/stellar/sdk/xdr/HmacSha256Mac.java +++ b/src/main/java/org/stellar/sdk/xdr/HmacSha256Mac.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -62,6 +65,32 @@ public boolean equals(Object object) { return Arrays.equals(this.mac, other.mac); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static HmacSha256Mac fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static HmacSha256Mac fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private byte[] mac; diff --git a/src/main/java/org/stellar/sdk/xdr/HostFunction.java b/src/main/java/org/stellar/sdk/xdr/HostFunction.java index 28d837199..f62984d1d 100644 --- a/src/main/java/org/stellar/sdk/xdr/HostFunction.java +++ b/src/main/java/org/stellar/sdk/xdr/HostFunction.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -163,4 +166,30 @@ public boolean equals(Object object) { && Arrays.equals(this.wasm, other.wasm) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static HostFunction fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static HostFunction fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/HostFunctionType.java b/src/main/java/org/stellar/sdk/xdr/HostFunctionType.java index d8bfdbc8f..a374f9ed9 100644 --- a/src/main/java/org/stellar/sdk/xdr/HostFunctionType.java +++ b/src/main/java/org/stellar/sdk/xdr/HostFunctionType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -53,4 +56,30 @@ public static void encode(XdrDataOutputStream stream, HostFunctionType value) th public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static HostFunctionType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static HostFunctionType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/IPAddrType.java b/src/main/java/org/stellar/sdk/xdr/IPAddrType.java index 08d887d10..8d62a3d48 100644 --- a/src/main/java/org/stellar/sdk/xdr/IPAddrType.java +++ b/src/main/java/org/stellar/sdk/xdr/IPAddrType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -49,4 +52,30 @@ public static void encode(XdrDataOutputStream stream, IPAddrType value) throws I public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static IPAddrType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static IPAddrType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/InflationPayout.java b/src/main/java/org/stellar/sdk/xdr/InflationPayout.java index 1c9ed7008..ffb1923db 100644 --- a/src/main/java/org/stellar/sdk/xdr/InflationPayout.java +++ b/src/main/java/org/stellar/sdk/xdr/InflationPayout.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -73,6 +76,32 @@ public boolean equals(Object object) { && Objects.equal(this.amount, other.amount); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static InflationPayout fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static InflationPayout fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID destination; private Int64 amount; diff --git a/src/main/java/org/stellar/sdk/xdr/InflationResult.java b/src/main/java/org/stellar/sdk/xdr/InflationResult.java index 33c8bd2f9..a4452ba16 100644 --- a/src/main/java/org/stellar/sdk/xdr/InflationResult.java +++ b/src/main/java/org/stellar/sdk/xdr/InflationResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -119,4 +122,30 @@ public boolean equals(Object object) { InflationResult other = (InflationResult) object; return Arrays.equals(this.payouts, other.payouts) && Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static InflationResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static InflationResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/InflationResultCode.java b/src/main/java/org/stellar/sdk/xdr/InflationResultCode.java index 01a7f5f5a..8cf4e12f0 100644 --- a/src/main/java/org/stellar/sdk/xdr/InflationResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/InflationResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -52,4 +55,30 @@ public static void encode(XdrDataOutputStream stream, InflationResultCode value) public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static InflationResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static InflationResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/InnerTransactionResult.java b/src/main/java/org/stellar/sdk/xdr/InnerTransactionResult.java index 823051107..a7e514ed6 100644 --- a/src/main/java/org/stellar/sdk/xdr/InnerTransactionResult.java +++ b/src/main/java/org/stellar/sdk/xdr/InnerTransactionResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -122,6 +125,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static InnerTransactionResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static InnerTransactionResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Int64 feeCharged; private InnerTransactionResultResult result; @@ -151,7 +180,7 @@ public InnerTransactionResult build() { } } - public static class InnerTransactionResultResult { + public static class InnerTransactionResultResult implements XdrElement { public InnerTransactionResultResult() {} TransactionResultCode code; @@ -284,9 +313,35 @@ public boolean equals(Object object) { InnerTransactionResultResult other = (InnerTransactionResultResult) object; return Arrays.equals(this.results, other.results) && Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static InnerTransactionResultResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static InnerTransactionResultResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } - public static class InnerTransactionResultExt { + public static class InnerTransactionResultExt implements XdrElement { public InnerTransactionResultExt() {} Integer v; @@ -355,5 +410,31 @@ public boolean equals(Object object) { InnerTransactionResultExt other = (InnerTransactionResultExt) object; return Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static InnerTransactionResultExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static InnerTransactionResultExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/InnerTransactionResultPair.java b/src/main/java/org/stellar/sdk/xdr/InnerTransactionResultPair.java index 8a07e440a..878e4e75b 100644 --- a/src/main/java/org/stellar/sdk/xdr/InnerTransactionResultPair.java +++ b/src/main/java/org/stellar/sdk/xdr/InnerTransactionResultPair.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -74,6 +77,32 @@ public boolean equals(Object object) { && Objects.equal(this.result, other.result); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static InnerTransactionResultPair fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static InnerTransactionResultPair fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Hash transactionHash; private InnerTransactionResult result; diff --git a/src/main/java/org/stellar/sdk/xdr/Int128Parts.java b/src/main/java/org/stellar/sdk/xdr/Int128Parts.java index d77fcd1da..2bf2552c3 100644 --- a/src/main/java/org/stellar/sdk/xdr/Int128Parts.java +++ b/src/main/java/org/stellar/sdk/xdr/Int128Parts.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -71,6 +74,32 @@ public boolean equals(Object object) { return Objects.equal(this.hi, other.hi) && Objects.equal(this.lo, other.lo); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Int128Parts fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Int128Parts fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Int64 hi; private Uint64 lo; diff --git a/src/main/java/org/stellar/sdk/xdr/Int256Parts.java b/src/main/java/org/stellar/sdk/xdr/Int256Parts.java index 6f477f135..66f9204a7 100644 --- a/src/main/java/org/stellar/sdk/xdr/Int256Parts.java +++ b/src/main/java/org/stellar/sdk/xdr/Int256Parts.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -100,6 +103,32 @@ public boolean equals(Object object) { && Objects.equal(this.lo_lo, other.lo_lo); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Int256Parts fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Int256Parts fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Int64 hi_hi; private Uint64 hi_lo; diff --git a/src/main/java/org/stellar/sdk/xdr/Int32.java b/src/main/java/org/stellar/sdk/xdr/Int32.java index 15ba2b46e..b887dd2d9 100644 --- a/src/main/java/org/stellar/sdk/xdr/Int32.java +++ b/src/main/java/org/stellar/sdk/xdr/Int32.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -58,4 +61,30 @@ public boolean equals(Object object) { Int32 other = (Int32) object; return Objects.equal(this.int32, other.int32); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Int32 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Int32 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Int64.java b/src/main/java/org/stellar/sdk/xdr/Int64.java index 08f7bb020..c47b05bfd 100644 --- a/src/main/java/org/stellar/sdk/xdr/Int64.java +++ b/src/main/java/org/stellar/sdk/xdr/Int64.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -58,4 +61,30 @@ public boolean equals(Object object) { Int64 other = (Int64) object; return Objects.equal(this.int64, other.int64); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Int64 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Int64 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionOp.java b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionOp.java index 4805f092e..59d82dd6a 100644 --- a/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionOp.java +++ b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -85,6 +88,32 @@ public boolean equals(Object object) { && Arrays.equals(this.auth, other.auth); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static InvokeHostFunctionOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static InvokeHostFunctionOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private HostFunction hostFunction; private SorobanAuthorizationEntry[] auth; diff --git a/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResult.java b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResult.java index 417cd911d..494fb3500 100644 --- a/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResult.java +++ b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -17,7 +20,6 @@ // case INVOKE_HOST_FUNCTION_MALFORMED: // case INVOKE_HOST_FUNCTION_TRAPPED: // case INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED: -// case INVOKE_HOST_FUNCTION_ENTRY_EXPIRED: // void; // }; @@ -80,7 +82,6 @@ public static void encode( case INVOKE_HOST_FUNCTION_MALFORMED: case INVOKE_HOST_FUNCTION_TRAPPED: case INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED: - case INVOKE_HOST_FUNCTION_ENTRY_EXPIRED: break; } } @@ -100,7 +101,6 @@ public static InvokeHostFunctionResult decode(XdrDataInputStream stream) throws case INVOKE_HOST_FUNCTION_MALFORMED: case INVOKE_HOST_FUNCTION_TRAPPED: case INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED: - case INVOKE_HOST_FUNCTION_ENTRY_EXPIRED: break; } return decodedInvokeHostFunctionResult; @@ -120,4 +120,30 @@ public boolean equals(Object object) { InvokeHostFunctionResult other = (InvokeHostFunctionResult) object; return Objects.equal(this.success, other.success) && Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static InvokeHostFunctionResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static InvokeHostFunctionResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResultCode.java b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResultCode.java index 1f211d434..b88f149df 100644 --- a/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -17,8 +20,7 @@ // // codes considered as "failure" for the operation // INVOKE_HOST_FUNCTION_MALFORMED = -1, // INVOKE_HOST_FUNCTION_TRAPPED = -2, -// INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED = -3, -// INVOKE_HOST_FUNCTION_ENTRY_EXPIRED = -4 +// INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED = -3 // }; // =========================================================================== @@ -27,7 +29,6 @@ public enum InvokeHostFunctionResultCode implements XdrElement { INVOKE_HOST_FUNCTION_MALFORMED(-1), INVOKE_HOST_FUNCTION_TRAPPED(-2), INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED(-3), - INVOKE_HOST_FUNCTION_ENTRY_EXPIRED(-4), ; private int mValue; @@ -50,8 +51,6 @@ public static InvokeHostFunctionResultCode decode(XdrDataInputStream stream) thr return INVOKE_HOST_FUNCTION_TRAPPED; case -3: return INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED; - case -4: - return INVOKE_HOST_FUNCTION_ENTRY_EXPIRED; default: throw new RuntimeException("Unknown enum value: " + value); } @@ -65,4 +64,30 @@ public static void encode(XdrDataOutputStream stream, InvokeHostFunctionResultCo public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static InvokeHostFunctionResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static InvokeHostFunctionResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionSuccessPreImage.java b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionSuccessPreImage.java index f8ef45bb1..feefc9cd5 100644 --- a/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionSuccessPreImage.java +++ b/src/main/java/org/stellar/sdk/xdr/InvokeHostFunctionSuccessPreImage.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -86,6 +89,32 @@ public boolean equals(Object object) { && Arrays.equals(this.events, other.events); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static InvokeHostFunctionSuccessPreImage fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static InvokeHostFunctionSuccessPreImage fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCVal returnValue; private ContractEvent[] events; diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerBounds.java b/src/main/java/org/stellar/sdk/xdr/LedgerBounds.java index a2e75d0fe..596b79023 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerBounds.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerBounds.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -73,6 +76,32 @@ public boolean equals(Object object) { && Objects.equal(this.maxLedger, other.maxLedger); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerBounds fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerBounds fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 minLedger; private Uint32 maxLedger; diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerCloseMeta.java b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMeta.java index 63ef3ced1..ea5942334 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerCloseMeta.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMeta.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -157,4 +160,30 @@ public boolean equals(Object object) { && Objects.equal(this.v2, other.v2) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerCloseMeta fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerCloseMeta fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV0.java b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV0.java index 4ddb87a9b..5a8d90e96 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV0.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -154,6 +157,32 @@ public boolean equals(Object object) { && Arrays.equals(this.scpInfo, other.scpInfo); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerCloseMetaV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerCloseMetaV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private LedgerHeaderHistoryEntry ledgerHeader; private TransactionSet txSet; diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV1.java b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV1.java index 7c286efef..727aad9c7 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV1.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV1.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -154,6 +157,32 @@ public boolean equals(Object object) { && Arrays.equals(this.scpInfo, other.scpInfo); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerCloseMetaV1 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerCloseMetaV1 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private LedgerHeaderHistoryEntry ledgerHeader; private GeneralizedTransactionSet txSet; diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV2.java b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV2.java index b056cb34c..ee92e31a2 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV2.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerCloseMetaV2.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -245,6 +248,32 @@ public boolean equals(Object object) { && Arrays.equals(this.evictedPersistentLedgerEntries, other.evictedPersistentLedgerEntries); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerCloseMetaV2 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerCloseMetaV2 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ExtensionPoint ext; private LedgerHeaderHistoryEntry ledgerHeader; diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerCloseValueSignature.java b/src/main/java/org/stellar/sdk/xdr/LedgerCloseValueSignature.java index 5d928167d..f834aff58 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerCloseValueSignature.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerCloseValueSignature.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -74,6 +77,32 @@ public boolean equals(Object object) { && Objects.equal(this.signature, other.signature); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerCloseValueSignature fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerCloseValueSignature fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private NodeID nodeID; private Signature signature; diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerEntry.java b/src/main/java/org/stellar/sdk/xdr/LedgerEntry.java index a12a5d356..574c3bdcd 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -118,6 +121,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 lastModifiedLedgerSeq; private LedgerEntryData data; @@ -147,7 +176,7 @@ public LedgerEntry build() { } } - public static class LedgerEntryData { + public static class LedgerEntryData implements XdrElement { public LedgerEntryData() {} LedgerEntryType type; @@ -437,9 +466,35 @@ public boolean equals(Object object) { && Objects.equal(this.configSetting, other.configSetting) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerEntryData fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerEntryData fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } - public static class LedgerEntryExt { + public static class LedgerEntryExt implements XdrElement { public LedgerEntryExt() {} Integer v; @@ -530,5 +585,31 @@ public boolean equals(Object object) { LedgerEntryExt other = (LedgerEntryExt) object; return Objects.equal(this.v1, other.v1) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerEntryExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerEntryExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerEntryChange.java b/src/main/java/org/stellar/sdk/xdr/LedgerEntryChange.java index 0893e8f8c..cda0a7137 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerEntryChange.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerEntryChange.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -183,4 +186,30 @@ public boolean equals(Object object) { && Objects.equal(this.state, other.state) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerEntryChange fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerEntryChange fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerEntryChangeType.java b/src/main/java/org/stellar/sdk/xdr/LedgerEntryChangeType.java index 262e2b569..170bbb957 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerEntryChangeType.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerEntryChangeType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -58,4 +61,30 @@ public static void encode(XdrDataOutputStream stream, LedgerEntryChangeType valu public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerEntryChangeType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerEntryChangeType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerEntryChanges.java b/src/main/java/org/stellar/sdk/xdr/LedgerEntryChanges.java index 4f25eaedb..395b6d3cd 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerEntryChanges.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerEntryChanges.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -67,4 +70,30 @@ public boolean equals(Object object) { LedgerEntryChanges other = (LedgerEntryChanges) object; return Arrays.equals(this.LedgerEntryChanges, other.LedgerEntryChanges); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerEntryChanges fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerEntryChanges fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerEntryExtensionV1.java b/src/main/java/org/stellar/sdk/xdr/LedgerEntryExtensionV1.java index 018739ddf..f0cdf88f3 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerEntryExtensionV1.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerEntryExtensionV1.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -80,6 +83,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerEntryExtensionV1 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerEntryExtensionV1 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SponsorshipDescriptor sponsoringID; private LedgerEntryExtensionV1Ext ext; @@ -102,7 +131,7 @@ public LedgerEntryExtensionV1 build() { } } - public static class LedgerEntryExtensionV1Ext { + public static class LedgerEntryExtensionV1Ext implements XdrElement { public LedgerEntryExtensionV1Ext() {} Integer v; @@ -171,5 +200,31 @@ public boolean equals(Object object) { LedgerEntryExtensionV1Ext other = (LedgerEntryExtensionV1Ext) object; return Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerEntryExtensionV1Ext fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerEntryExtensionV1Ext fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerEntryType.java b/src/main/java/org/stellar/sdk/xdr/LedgerEntryType.java index 2fc3d2e93..fb93bcda4 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerEntryType.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerEntryType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -77,4 +80,30 @@ public static void encode(XdrDataOutputStream stream, LedgerEntryType value) thr public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerEntryType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerEntryType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerFootprint.java b/src/main/java/org/stellar/sdk/xdr/LedgerFootprint.java index bc17b02a0..2800c971b 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerFootprint.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerFootprint.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -90,6 +93,32 @@ public boolean equals(Object object) { && Arrays.equals(this.readWrite, other.readWrite); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerFootprint fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerFootprint fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private LedgerKey[] readOnly; private LedgerKey[] readWrite; diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerHeader.java b/src/main/java/org/stellar/sdk/xdr/LedgerHeader.java index 1993ba949..aff6b0089 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerHeader.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerHeader.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -299,6 +302,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerHeader fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerHeader fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 ledgerVersion; private Hash previousLedgerHash; @@ -412,7 +441,7 @@ public LedgerHeader build() { } } - public static class LedgerHeaderExt { + public static class LedgerHeaderExt implements XdrElement { public LedgerHeaderExt() {} Integer v; @@ -503,5 +532,31 @@ public boolean equals(Object object) { LedgerHeaderExt other = (LedgerHeaderExt) object; return Objects.equal(this.v1, other.v1) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerHeaderExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerHeaderExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerHeaderExtensionV1.java b/src/main/java/org/stellar/sdk/xdr/LedgerHeaderExtensionV1.java index dd8750822..5ed005ab8 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerHeaderExtensionV1.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerHeaderExtensionV1.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -79,6 +82,32 @@ public boolean equals(Object object) { return Objects.equal(this.flags, other.flags) && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerHeaderExtensionV1 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerHeaderExtensionV1 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 flags; private LedgerHeaderExtensionV1Ext ext; @@ -101,7 +130,7 @@ public LedgerHeaderExtensionV1 build() { } } - public static class LedgerHeaderExtensionV1Ext { + public static class LedgerHeaderExtensionV1Ext implements XdrElement { public LedgerHeaderExtensionV1Ext() {} Integer v; @@ -171,5 +200,31 @@ public boolean equals(Object object) { LedgerHeaderExtensionV1Ext other = (LedgerHeaderExtensionV1Ext) object; return Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerHeaderExtensionV1Ext fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerHeaderExtensionV1Ext fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerHeaderFlags.java b/src/main/java/org/stellar/sdk/xdr/LedgerHeaderFlags.java index 6f459b35f..85988d04b 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerHeaderFlags.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerHeaderFlags.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -70,4 +73,30 @@ public static void encode(XdrDataOutputStream stream, LedgerHeaderFlags value) public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerHeaderFlags fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerHeaderFlags fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerHeaderHistoryEntry.java b/src/main/java/org/stellar/sdk/xdr/LedgerHeaderHistoryEntry.java index e37f25504..82bbe293b 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerHeaderHistoryEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerHeaderHistoryEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -95,6 +98,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerHeaderHistoryEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerHeaderHistoryEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Hash hash; private LedgerHeader header; @@ -124,7 +153,7 @@ public LedgerHeaderHistoryEntry build() { } } - public static class LedgerHeaderHistoryEntryExt { + public static class LedgerHeaderHistoryEntryExt implements XdrElement { public LedgerHeaderHistoryEntryExt() {} Integer v; @@ -194,5 +223,31 @@ public boolean equals(Object object) { LedgerHeaderHistoryEntryExt other = (LedgerHeaderHistoryEntryExt) object; return Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerHeaderHistoryEntryExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerHeaderHistoryEntryExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerKey.java b/src/main/java/org/stellar/sdk/xdr/LedgerKey.java index 5b2ca4aca..ef527d173 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerKey.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerKey.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -363,7 +366,33 @@ public boolean equals(Object object) { && Objects.equal(this.type, other.type); } - public static class LedgerKeyAccount { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerKey fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerKey fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class LedgerKeyAccount implements XdrElement { public LedgerKeyAccount() {} private AccountID accountID; @@ -406,6 +435,32 @@ public boolean equals(Object object) { return Objects.equal(this.accountID, other.accountID); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerKeyAccount fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerKeyAccount fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID accountID; @@ -422,7 +477,7 @@ public LedgerKeyAccount build() { } } - public static class LedgerKeyTrustLine { + public static class LedgerKeyTrustLine implements XdrElement { public LedgerKeyTrustLine() {} private AccountID accountID; @@ -479,6 +534,32 @@ public boolean equals(Object object) { && Objects.equal(this.asset, other.asset); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerKeyTrustLine fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerKeyTrustLine fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID accountID; private TrustLineAsset asset; @@ -502,7 +583,7 @@ public LedgerKeyTrustLine build() { } } - public static class LedgerKeyOffer { + public static class LedgerKeyOffer implements XdrElement { public LedgerKeyOffer() {} private AccountID sellerID; @@ -558,6 +639,32 @@ public boolean equals(Object object) { && Objects.equal(this.offerID, other.offerID); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerKeyOffer fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerKeyOffer fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID sellerID; private Int64 offerID; @@ -581,7 +688,7 @@ public LedgerKeyOffer build() { } } - public static class LedgerKeyData { + public static class LedgerKeyData implements XdrElement { public LedgerKeyData() {} private AccountID accountID; @@ -637,6 +744,32 @@ public boolean equals(Object object) { && Objects.equal(this.dataName, other.dataName); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerKeyData fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerKeyData fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID accountID; private String64 dataName; @@ -660,7 +793,7 @@ public LedgerKeyData build() { } } - public static class LedgerKeyClaimableBalance { + public static class LedgerKeyClaimableBalance implements XdrElement { public LedgerKeyClaimableBalance() {} private ClaimableBalanceID balanceID; @@ -704,6 +837,32 @@ public boolean equals(Object object) { return Objects.equal(this.balanceID, other.balanceID); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerKeyClaimableBalance fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerKeyClaimableBalance fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ClaimableBalanceID balanceID; @@ -720,7 +879,7 @@ public LedgerKeyClaimableBalance build() { } } - public static class LedgerKeyLiquidityPool { + public static class LedgerKeyLiquidityPool implements XdrElement { public LedgerKeyLiquidityPool() {} private PoolID liquidityPoolID; @@ -764,6 +923,32 @@ public boolean equals(Object object) { return Objects.equal(this.liquidityPoolID, other.liquidityPoolID); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerKeyLiquidityPool fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerKeyLiquidityPool fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private PoolID liquidityPoolID; @@ -780,7 +965,7 @@ public LedgerKeyLiquidityPool build() { } } - public static class LedgerKeyContractData { + public static class LedgerKeyContractData implements XdrElement { public LedgerKeyContractData() {} private SCAddress contract; @@ -863,6 +1048,32 @@ public boolean equals(Object object) { && Objects.equal(this.bodyType, other.bodyType); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerKeyContractData fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerKeyContractData fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCAddress contract; private SCVal key; @@ -900,7 +1111,7 @@ public LedgerKeyContractData build() { } } - public static class LedgerKeyContractCode { + public static class LedgerKeyContractCode implements XdrElement { public LedgerKeyContractCode() {} private Hash hash; @@ -956,6 +1167,32 @@ public boolean equals(Object object) { return Objects.equal(this.hash, other.hash) && Objects.equal(this.bodyType, other.bodyType); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerKeyContractCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerKeyContractCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Hash hash; private ContractEntryBodyType bodyType; @@ -979,7 +1216,7 @@ public LedgerKeyContractCode build() { } } - public static class LedgerKeyConfigSetting { + public static class LedgerKeyConfigSetting implements XdrElement { public LedgerKeyConfigSetting() {} private ConfigSettingID configSettingID; @@ -1023,6 +1260,32 @@ public boolean equals(Object object) { return Objects.equal(this.configSettingID, other.configSettingID); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerKeyConfigSetting fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerKeyConfigSetting fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ConfigSettingID configSettingID; diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerSCPMessages.java b/src/main/java/org/stellar/sdk/xdr/LedgerSCPMessages.java index 4a99ba955..015d56615 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerSCPMessages.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerSCPMessages.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -82,6 +85,32 @@ public boolean equals(Object object) { && Arrays.equals(this.messages, other.messages); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerSCPMessages fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerSCPMessages fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 ledgerSeq; private SCPEnvelope[] messages; diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerUpgrade.java b/src/main/java/org/stellar/sdk/xdr/LedgerUpgrade.java index 72ae50ad8..995b36531 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerUpgrade.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerUpgrade.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -242,4 +245,30 @@ public boolean equals(Object object) { && Objects.equal(this.newConfig, other.newConfig) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerUpgrade fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerUpgrade fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/LedgerUpgradeType.java b/src/main/java/org/stellar/sdk/xdr/LedgerUpgradeType.java index d728ec31f..47876e276 100644 --- a/src/main/java/org/stellar/sdk/xdr/LedgerUpgradeType.java +++ b/src/main/java/org/stellar/sdk/xdr/LedgerUpgradeType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -66,4 +69,30 @@ public static void encode(XdrDataOutputStream stream, LedgerUpgradeType value) public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LedgerUpgradeType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LedgerUpgradeType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Liabilities.java b/src/main/java/org/stellar/sdk/xdr/Liabilities.java index 22c9e554a..b1d0b0d5a 100644 --- a/src/main/java/org/stellar/sdk/xdr/Liabilities.java +++ b/src/main/java/org/stellar/sdk/xdr/Liabilities.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -72,6 +75,32 @@ public boolean equals(Object object) { return Objects.equal(this.buying, other.buying) && Objects.equal(this.selling, other.selling); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Liabilities fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Liabilities fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Int64 buying; private Int64 selling; diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolConstantProductParameters.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolConstantProductParameters.java index 1749d58be..387e18e69 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolConstantProductParameters.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolConstantProductParameters.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -91,6 +94,34 @@ public boolean equals(Object object) { && Objects.equal(this.fee, other.fee); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LiquidityPoolConstantProductParameters fromXdrBase64(String xdr) + throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LiquidityPoolConstantProductParameters fromXdrByteArray(byte[] xdr) + throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Asset assetA; private Asset assetB; diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositOp.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositOp.java index f76f98752..a059f37b7 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositOp.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -117,6 +120,32 @@ public boolean equals(Object object) { && Objects.equal(this.maxPrice, other.maxPrice); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LiquidityPoolDepositOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LiquidityPoolDepositOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private PoolID liquidityPoolID; private Int64 maxAmountA; diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResult.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResult.java index 0abc15f7b..cf555d95f 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResult.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -110,4 +113,30 @@ public boolean equals(Object object) { LiquidityPoolDepositResult other = (LiquidityPoolDepositResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LiquidityPoolDepositResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LiquidityPoolDepositResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResultCode.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResultCode.java index d24a52369..d9b5afe02 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -82,4 +85,30 @@ public static void encode(XdrDataOutputStream stream, LiquidityPoolDepositResult public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LiquidityPoolDepositResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LiquidityPoolDepositResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolEntry.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolEntry.java index 77c7fdfb1..ec5a2003d 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -88,6 +91,32 @@ public boolean equals(Object object) { && Objects.equal(this.body, other.body); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LiquidityPoolEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LiquidityPoolEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private PoolID liquidityPoolID; private LiquidityPoolEntryBody body; @@ -110,7 +139,7 @@ public LiquidityPoolEntry build() { } } - public static class LiquidityPoolEntryBody { + public static class LiquidityPoolEntryBody implements XdrElement { public LiquidityPoolEntryBody() {} LiquidityPoolType type; @@ -202,7 +231,33 @@ public boolean equals(Object object) { && Objects.equal(this.type, other.type); } - public static class LiquidityPoolEntryConstantProduct { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LiquidityPoolEntryBody fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LiquidityPoolEntryBody fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class LiquidityPoolEntryConstantProduct implements XdrElement { public LiquidityPoolEntryConstantProduct() {} private LiquidityPoolConstantProductParameters params; @@ -308,6 +363,33 @@ public boolean equals(Object object) { && Objects.equal(this.poolSharesTrustLineCount, other.poolSharesTrustLineCount); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LiquidityPoolEntryConstantProduct fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LiquidityPoolEntryConstantProduct fromXdrByteArray(byte[] xdr) + throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private LiquidityPoolConstantProductParameters params; private Int64 reserveA; diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolParameters.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolParameters.java index 4fdc23e2b..5b554bfdc 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolParameters.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolParameters.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -108,4 +111,30 @@ public boolean equals(Object object) { return Objects.equal(this.constantProduct, other.constantProduct) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LiquidityPoolParameters fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LiquidityPoolParameters fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolType.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolType.java index e7bf8e6cd..8c326247b 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolType.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -46,4 +49,30 @@ public static void encode(XdrDataOutputStream stream, LiquidityPoolType value) public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LiquidityPoolType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LiquidityPoolType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawOp.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawOp.java index 31881dd76..1a1f2802a 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawOp.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -102,6 +105,32 @@ public boolean equals(Object object) { && Objects.equal(this.minAmountB, other.minAmountB); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LiquidityPoolWithdrawOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LiquidityPoolWithdrawOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private PoolID liquidityPoolID; private Int64 amount; diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResult.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResult.java index c42ee7e58..5adf72fe6 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResult.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -105,4 +108,30 @@ public boolean equals(Object object) { LiquidityPoolWithdrawResult other = (LiquidityPoolWithdrawResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LiquidityPoolWithdrawResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LiquidityPoolWithdrawResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResultCode.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResultCode.java index a6ee0eb29..e99125470 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -73,4 +76,30 @@ public static void encode(XdrDataOutputStream stream, LiquidityPoolWithdrawResul public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static LiquidityPoolWithdrawResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static LiquidityPoolWithdrawResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferOp.java b/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferOp.java index 8a1067a10..2a879abcf 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferOp.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -118,6 +121,32 @@ public boolean equals(Object object) { && Objects.equal(this.offerID, other.offerID); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ManageBuyOfferOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ManageBuyOfferOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Asset selling; private Asset buying; diff --git a/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResult.java b/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResult.java index a54a14a19..4e47b8dea 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -144,4 +147,30 @@ public boolean equals(Object object) { ManageBuyOfferResult other = (ManageBuyOfferResult) object; return Objects.equal(this.success, other.success) && Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ManageBuyOfferResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ManageBuyOfferResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResultCode.java b/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResultCode.java index f9f2af825..48319a324 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageBuyOfferResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -101,4 +104,30 @@ public static void encode(XdrDataOutputStream stream, ManageBuyOfferResultCode v public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ManageBuyOfferResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ManageBuyOfferResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ManageDataOp.java b/src/main/java/org/stellar/sdk/xdr/ManageDataOp.java index ab7fe52e6..cac6b2772 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageDataOp.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageDataOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -81,6 +84,32 @@ public boolean equals(Object object) { && Objects.equal(this.dataValue, other.dataValue); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ManageDataOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ManageDataOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private String64 dataName; private DataValue dataValue; diff --git a/src/main/java/org/stellar/sdk/xdr/ManageDataResult.java b/src/main/java/org/stellar/sdk/xdr/ManageDataResult.java index e126cf1d4..9a801aebb 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageDataResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageDataResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -100,4 +103,30 @@ public boolean equals(Object object) { ManageDataResult other = (ManageDataResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ManageDataResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ManageDataResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ManageDataResultCode.java b/src/main/java/org/stellar/sdk/xdr/ManageDataResultCode.java index 96bdf6562..db63e205a 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageDataResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageDataResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -66,4 +69,30 @@ public static void encode(XdrDataOutputStream stream, ManageDataResultCode value public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ManageDataResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ManageDataResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ManageOfferEffect.java b/src/main/java/org/stellar/sdk/xdr/ManageOfferEffect.java index ce9a70558..e88d7ef17 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageOfferEffect.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageOfferEffect.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -54,4 +57,30 @@ public static void encode(XdrDataOutputStream stream, ManageOfferEffect value) public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ManageOfferEffect fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ManageOfferEffect fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ManageOfferSuccessResult.java b/src/main/java/org/stellar/sdk/xdr/ManageOfferSuccessResult.java index ace941539..8b649c160 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageOfferSuccessResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageOfferSuccessResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -93,6 +96,32 @@ public boolean equals(Object object) { && Objects.equal(this.offer, other.offer); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ManageOfferSuccessResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ManageOfferSuccessResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ClaimAtom[] offersClaimed; private ManageOfferSuccessResultOffer offer; @@ -115,7 +144,7 @@ public ManageOfferSuccessResult build() { } } - public static class ManageOfferSuccessResultOffer { + public static class ManageOfferSuccessResultOffer implements XdrElement { public ManageOfferSuccessResultOffer() {} ManageOfferEffect effect; @@ -212,5 +241,31 @@ public boolean equals(Object object) { ManageOfferSuccessResultOffer other = (ManageOfferSuccessResultOffer) object; return Objects.equal(this.offer, other.offer) && Objects.equal(this.effect, other.effect); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ManageOfferSuccessResultOffer fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ManageOfferSuccessResultOffer fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/ManageSellOfferOp.java b/src/main/java/org/stellar/sdk/xdr/ManageSellOfferOp.java index d5c46e8aa..b802452ae 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageSellOfferOp.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageSellOfferOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -117,6 +120,32 @@ public boolean equals(Object object) { && Objects.equal(this.offerID, other.offerID); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ManageSellOfferOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ManageSellOfferOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Asset selling; private Asset buying; diff --git a/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResult.java b/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResult.java index 4a9f839a4..38f812312 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -144,4 +147,30 @@ public boolean equals(Object object) { ManageSellOfferResult other = (ManageSellOfferResult) object; return Objects.equal(this.success, other.success) && Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ManageSellOfferResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ManageSellOfferResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResultCode.java b/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResultCode.java index 6bc21bc13..97faa4815 100644 --- a/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ManageSellOfferResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -104,4 +107,30 @@ public static void encode(XdrDataOutputStream stream, ManageSellOfferResultCode public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ManageSellOfferResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ManageSellOfferResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Memo.java b/src/main/java/org/stellar/sdk/xdr/Memo.java index e34cd5030..264e56d7a 100644 --- a/src/main/java/org/stellar/sdk/xdr/Memo.java +++ b/src/main/java/org/stellar/sdk/xdr/Memo.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -188,4 +191,30 @@ public boolean equals(Object object) { && Objects.equal(this.retHash, other.retHash) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Memo fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Memo fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/MemoType.java b/src/main/java/org/stellar/sdk/xdr/MemoType.java index 739f839ba..f1c47b717 100644 --- a/src/main/java/org/stellar/sdk/xdr/MemoType.java +++ b/src/main/java/org/stellar/sdk/xdr/MemoType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -61,4 +64,30 @@ public static void encode(XdrDataOutputStream stream, MemoType value) throws IOE public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static MemoType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static MemoType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/MessageType.java b/src/main/java/org/stellar/sdk/xdr/MessageType.java index 1a1b0113f..fb1d1b31a 100644 --- a/src/main/java/org/stellar/sdk/xdr/MessageType.java +++ b/src/main/java/org/stellar/sdk/xdr/MessageType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -131,4 +134,30 @@ public static void encode(XdrDataOutputStream stream, MessageType value) throws public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static MessageType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static MessageType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/MuxedAccount.java b/src/main/java/org/stellar/sdk/xdr/MuxedAccount.java index 78a5643f4..94a0162a4 100644 --- a/src/main/java/org/stellar/sdk/xdr/MuxedAccount.java +++ b/src/main/java/org/stellar/sdk/xdr/MuxedAccount.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -136,7 +139,33 @@ public boolean equals(Object object) { && Objects.equal(this.type, other.type); } - public static class MuxedAccountMed25519 { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static MuxedAccount fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static MuxedAccount fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class MuxedAccountMed25519 implements XdrElement { public MuxedAccountMed25519() {} private Uint64 id; @@ -192,6 +221,32 @@ public boolean equals(Object object) { return Objects.equal(this.id, other.id) && Objects.equal(this.ed25519, other.ed25519); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static MuxedAccountMed25519 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static MuxedAccountMed25519 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint64 id; private Uint256 ed25519; diff --git a/src/main/java/org/stellar/sdk/xdr/NodeID.java b/src/main/java/org/stellar/sdk/xdr/NodeID.java index ccd5ee635..c8d7f9afd 100644 --- a/src/main/java/org/stellar/sdk/xdr/NodeID.java +++ b/src/main/java/org/stellar/sdk/xdr/NodeID.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -58,4 +61,30 @@ public boolean equals(Object object) { NodeID other = (NodeID) object; return Objects.equal(this.NodeID, other.NodeID); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static NodeID fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static NodeID fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/OfferEntry.java b/src/main/java/org/stellar/sdk/xdr/OfferEntry.java index 0bb10895b..d4415109e 100644 --- a/src/main/java/org/stellar/sdk/xdr/OfferEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/OfferEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -178,6 +181,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static OfferEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static OfferEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID sellerID; private Int64 offerID; @@ -242,7 +271,7 @@ public OfferEntry build() { } } - public static class OfferEntryExt { + public static class OfferEntryExt implements XdrElement { public OfferEntryExt() {} Integer v; @@ -310,5 +339,31 @@ public boolean equals(Object object) { OfferEntryExt other = (OfferEntryExt) object; return Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static OfferEntryExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static OfferEntryExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/OfferEntryFlags.java b/src/main/java/org/stellar/sdk/xdr/OfferEntryFlags.java index 0c5bedc17..82721b7b1 100644 --- a/src/main/java/org/stellar/sdk/xdr/OfferEntryFlags.java +++ b/src/main/java/org/stellar/sdk/xdr/OfferEntryFlags.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -47,4 +50,30 @@ public static void encode(XdrDataOutputStream stream, OfferEntryFlags value) thr public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static OfferEntryFlags fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static OfferEntryFlags fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Operation.java b/src/main/java/org/stellar/sdk/xdr/Operation.java index eb44510e7..1bf37c92c 100644 --- a/src/main/java/org/stellar/sdk/xdr/Operation.java +++ b/src/main/java/org/stellar/sdk/xdr/Operation.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -142,6 +145,32 @@ public boolean equals(Object object) { && Objects.equal(this.body, other.body); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Operation fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Operation fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private MuxedAccount sourceAccount; private OperationBody body; @@ -164,7 +193,7 @@ public Operation build() { } } - public static class OperationBody { + public static class OperationBody implements XdrElement { public OperationBody() {} OperationType type; @@ -873,5 +902,31 @@ public boolean equals(Object object) { && Objects.equal(this.restoreFootprintOp, other.restoreFootprintOp) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static OperationBody fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static OperationBody fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/OperationMeta.java b/src/main/java/org/stellar/sdk/xdr/OperationMeta.java index 7ee0e0cc0..1390366f3 100644 --- a/src/main/java/org/stellar/sdk/xdr/OperationMeta.java +++ b/src/main/java/org/stellar/sdk/xdr/OperationMeta.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,6 +62,32 @@ public boolean equals(Object object) { return Objects.equal(this.changes, other.changes); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static OperationMeta fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static OperationMeta fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private LedgerEntryChanges changes; diff --git a/src/main/java/org/stellar/sdk/xdr/OperationResult.java b/src/main/java/org/stellar/sdk/xdr/OperationResult.java index 3401ae422..383079877 100644 --- a/src/main/java/org/stellar/sdk/xdr/OperationResult.java +++ b/src/main/java/org/stellar/sdk/xdr/OperationResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -183,7 +186,33 @@ public boolean equals(Object object) { return Objects.equal(this.tr, other.tr) && Objects.equal(this.code, other.code); } - public static class OperationResultTr { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static OperationResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static OperationResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class OperationResultTr implements XdrElement { public OperationResultTr() {} OperationType type; @@ -962,5 +991,31 @@ public boolean equals(Object object) { && Objects.equal(this.restoreFootprintResult, other.restoreFootprintResult) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static OperationResultTr fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static OperationResultTr fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/OperationResultCode.java b/src/main/java/org/stellar/sdk/xdr/OperationResultCode.java index 6f82a29a1..ebf4a5bcc 100644 --- a/src/main/java/org/stellar/sdk/xdr/OperationResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/OperationResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -71,4 +74,30 @@ public static void encode(XdrDataOutputStream stream, OperationResultCode value) public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static OperationResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static OperationResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/OperationType.java b/src/main/java/org/stellar/sdk/xdr/OperationType.java index 0acb5fcc1..c4c6d391e 100644 --- a/src/main/java/org/stellar/sdk/xdr/OperationType.java +++ b/src/main/java/org/stellar/sdk/xdr/OperationType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -149,4 +152,30 @@ public static void encode(XdrDataOutputStream stream, OperationType value) throw public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static OperationType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static OperationType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveOp.java b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveOp.java index 86ae96832..869a5202d 100644 --- a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveOp.java +++ b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -149,6 +152,32 @@ public boolean equals(Object object) { && Arrays.equals(this.path, other.path); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PathPaymentStrictReceiveOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PathPaymentStrictReceiveOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Asset sendAsset; private Int64 sendMax; diff --git a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResult.java b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResult.java index 331b8a79f..85caab2ac 100644 --- a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResult.java +++ b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -184,7 +187,33 @@ public boolean equals(Object object) { && Objects.equal(this.code, other.code); } - public static class PathPaymentStrictReceiveResultSuccess { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PathPaymentStrictReceiveResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PathPaymentStrictReceiveResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class PathPaymentStrictReceiveResultSuccess implements XdrElement { public PathPaymentStrictReceiveResultSuccess() {} private ClaimAtom[] offers; @@ -251,6 +280,34 @@ public boolean equals(Object object) { return Arrays.equals(this.offers, other.offers) && Objects.equal(this.last, other.last); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PathPaymentStrictReceiveResultSuccess fromXdrBase64(String xdr) + throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PathPaymentStrictReceiveResultSuccess fromXdrByteArray(byte[] xdr) + throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ClaimAtom[] offers; private SimplePaymentResult last; diff --git a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResultCode.java b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResultCode.java index 00b81e661..1e30560e7 100644 --- a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictReceiveResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -107,4 +110,30 @@ public static void encode(XdrDataOutputStream stream, PathPaymentStrictReceiveRe public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PathPaymentStrictReceiveResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PathPaymentStrictReceiveResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendOp.java b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendOp.java index a8bcb85ee..109b4cf11 100644 --- a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendOp.java +++ b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -149,6 +152,32 @@ public boolean equals(Object object) { && Arrays.equals(this.path, other.path); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PathPaymentStrictSendOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PathPaymentStrictSendOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Asset sendAsset; private Int64 sendAmount; diff --git a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResult.java b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResult.java index 30411b068..d8300ef8c 100644 --- a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResult.java +++ b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -180,7 +183,33 @@ public boolean equals(Object object) { && Objects.equal(this.code, other.code); } - public static class PathPaymentStrictSendResultSuccess { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PathPaymentStrictSendResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PathPaymentStrictSendResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class PathPaymentStrictSendResultSuccess implements XdrElement { public PathPaymentStrictSendResultSuccess() {} private ClaimAtom[] offers; @@ -247,6 +276,33 @@ public boolean equals(Object object) { return Arrays.equals(this.offers, other.offers) && Objects.equal(this.last, other.last); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PathPaymentStrictSendResultSuccess fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PathPaymentStrictSendResultSuccess fromXdrByteArray(byte[] xdr) + throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ClaimAtom[] offers; private SimplePaymentResult last; diff --git a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResultCode.java b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResultCode.java index 18b092988..fef80eff2 100644 --- a/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/PathPaymentStrictSendResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -106,4 +109,30 @@ public static void encode(XdrDataOutputStream stream, PathPaymentStrictSendResul public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PathPaymentStrictSendResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PathPaymentStrictSendResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/PaymentOp.java b/src/main/java/org/stellar/sdk/xdr/PaymentOp.java index a1f8f3166..4e159bf9f 100644 --- a/src/main/java/org/stellar/sdk/xdr/PaymentOp.java +++ b/src/main/java/org/stellar/sdk/xdr/PaymentOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -87,6 +90,32 @@ public boolean equals(Object object) { && Objects.equal(this.amount, other.amount); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PaymentOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PaymentOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private MuxedAccount destination; private Asset asset; diff --git a/src/main/java/org/stellar/sdk/xdr/PaymentResult.java b/src/main/java/org/stellar/sdk/xdr/PaymentResult.java index 42893b288..879831a58 100644 --- a/src/main/java/org/stellar/sdk/xdr/PaymentResult.java +++ b/src/main/java/org/stellar/sdk/xdr/PaymentResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -115,4 +118,30 @@ public boolean equals(Object object) { PaymentResult other = (PaymentResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PaymentResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PaymentResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/PaymentResultCode.java b/src/main/java/org/stellar/sdk/xdr/PaymentResultCode.java index 97c01f829..aa8b3e88b 100644 --- a/src/main/java/org/stellar/sdk/xdr/PaymentResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/PaymentResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -85,4 +88,30 @@ public static void encode(XdrDataOutputStream stream, PaymentResultCode value) public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PaymentResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PaymentResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/PeerAddress.java b/src/main/java/org/stellar/sdk/xdr/PeerAddress.java index ca8f24eac..59171a0dd 100644 --- a/src/main/java/org/stellar/sdk/xdr/PeerAddress.java +++ b/src/main/java/org/stellar/sdk/xdr/PeerAddress.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -95,6 +98,32 @@ public boolean equals(Object object) { && Objects.equal(this.numFailures, other.numFailures); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PeerAddress fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PeerAddress fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private PeerAddressIp ip; private Uint32 port; @@ -124,7 +153,7 @@ public PeerAddress build() { } } - public static class PeerAddressIp { + public static class PeerAddressIp implements XdrElement { public PeerAddressIp() {} IPAddrType type; @@ -242,5 +271,31 @@ public boolean equals(Object object) { && Arrays.equals(this.ipv6, other.ipv6) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PeerAddressIp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PeerAddressIp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/PeerStatList.java b/src/main/java/org/stellar/sdk/xdr/PeerStatList.java index 37b0c989e..365b758a5 100644 --- a/src/main/java/org/stellar/sdk/xdr/PeerStatList.java +++ b/src/main/java/org/stellar/sdk/xdr/PeerStatList.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -67,4 +70,30 @@ public boolean equals(Object object) { PeerStatList other = (PeerStatList) object; return Arrays.equals(this.PeerStatList, other.PeerStatList); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PeerStatList fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PeerStatList fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/PeerStats.java b/src/main/java/org/stellar/sdk/xdr/PeerStats.java index 71b6a49be..993a13257 100644 --- a/src/main/java/org/stellar/sdk/xdr/PeerStats.java +++ b/src/main/java/org/stellar/sdk/xdr/PeerStats.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -272,6 +275,32 @@ public boolean equals(Object object) { && Objects.equal(this.duplicateFetchMessageRecv, other.duplicateFetchMessageRecv); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PeerStats fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PeerStats fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private NodeID id; private XdrString versionStr; diff --git a/src/main/java/org/stellar/sdk/xdr/PersistedSCPState.java b/src/main/java/org/stellar/sdk/xdr/PersistedSCPState.java index 06fdf90ce..9e8ab197b 100644 --- a/src/main/java/org/stellar/sdk/xdr/PersistedSCPState.java +++ b/src/main/java/org/stellar/sdk/xdr/PersistedSCPState.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -131,4 +134,30 @@ public boolean equals(Object object) { && Objects.equal(this.v1, other.v1) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PersistedSCPState fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PersistedSCPState fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV0.java b/src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV0.java index 307f3b206..e2a8592dc 100644 --- a/src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV0.java +++ b/src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -116,6 +119,32 @@ public boolean equals(Object object) { && Arrays.equals(this.txSets, other.txSets); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PersistedSCPStateV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PersistedSCPStateV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCPEnvelope[] scpEnvelopes; private SCPQuorumSet[] quorumSets; diff --git a/src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV1.java b/src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV1.java index 1414f2bf7..5ae64e598 100644 --- a/src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV1.java +++ b/src/main/java/org/stellar/sdk/xdr/PersistedSCPStateV1.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -92,6 +95,32 @@ public boolean equals(Object object) { && Arrays.equals(this.quorumSets, other.quorumSets); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PersistedSCPStateV1 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PersistedSCPStateV1 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCPEnvelope[] scpEnvelopes; private SCPQuorumSet[] quorumSets; diff --git a/src/main/java/org/stellar/sdk/xdr/PoolID.java b/src/main/java/org/stellar/sdk/xdr/PoolID.java index 230f02888..c0457ace9 100644 --- a/src/main/java/org/stellar/sdk/xdr/PoolID.java +++ b/src/main/java/org/stellar/sdk/xdr/PoolID.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -58,4 +61,30 @@ public boolean equals(Object object) { PoolID other = (PoolID) object; return Objects.equal(this.PoolID, other.PoolID); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PoolID fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PoolID fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/PreconditionType.java b/src/main/java/org/stellar/sdk/xdr/PreconditionType.java index 4f1435880..353f87188 100644 --- a/src/main/java/org/stellar/sdk/xdr/PreconditionType.java +++ b/src/main/java/org/stellar/sdk/xdr/PreconditionType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -53,4 +56,30 @@ public static void encode(XdrDataOutputStream stream, PreconditionType value) th public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PreconditionType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PreconditionType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Preconditions.java b/src/main/java/org/stellar/sdk/xdr/Preconditions.java index fc34c61c0..587eab130 100644 --- a/src/main/java/org/stellar/sdk/xdr/Preconditions.java +++ b/src/main/java/org/stellar/sdk/xdr/Preconditions.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -137,4 +140,30 @@ public boolean equals(Object object) { && Objects.equal(this.v2, other.v2) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Preconditions fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Preconditions fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/PreconditionsV2.java b/src/main/java/org/stellar/sdk/xdr/PreconditionsV2.java index 500576d02..7f95d06e3 100644 --- a/src/main/java/org/stellar/sdk/xdr/PreconditionsV2.java +++ b/src/main/java/org/stellar/sdk/xdr/PreconditionsV2.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -191,6 +194,32 @@ public boolean equals(Object object) { && Arrays.equals(this.extraSigners, other.extraSigners); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PreconditionsV2 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PreconditionsV2 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private TimeBounds timeBounds; private LedgerBounds ledgerBounds; diff --git a/src/main/java/org/stellar/sdk/xdr/Price.java b/src/main/java/org/stellar/sdk/xdr/Price.java index 0d4794d85..a6831d043 100644 --- a/src/main/java/org/stellar/sdk/xdr/Price.java +++ b/src/main/java/org/stellar/sdk/xdr/Price.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -71,6 +74,32 @@ public boolean equals(Object object) { return Objects.equal(this.n, other.n) && Objects.equal(this.d, other.d); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Price fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Price fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Int32 n; private Int32 d; diff --git a/src/main/java/org/stellar/sdk/xdr/PublicKey.java b/src/main/java/org/stellar/sdk/xdr/PublicKey.java index cf6fd34f2..cfe9b4d70 100644 --- a/src/main/java/org/stellar/sdk/xdr/PublicKey.java +++ b/src/main/java/org/stellar/sdk/xdr/PublicKey.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -104,4 +107,30 @@ public boolean equals(Object object) { PublicKey other = (PublicKey) object; return Objects.equal(this.ed25519, other.ed25519) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PublicKey fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PublicKey fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/PublicKeyType.java b/src/main/java/org/stellar/sdk/xdr/PublicKeyType.java index 38655d863..9ce503ee7 100644 --- a/src/main/java/org/stellar/sdk/xdr/PublicKeyType.java +++ b/src/main/java/org/stellar/sdk/xdr/PublicKeyType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -45,4 +48,30 @@ public static void encode(XdrDataOutputStream stream, PublicKeyType value) throw public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static PublicKeyType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static PublicKeyType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/RestoreFootprintOp.java b/src/main/java/org/stellar/sdk/xdr/RestoreFootprintOp.java index 7a11e393b..b46ef9800 100644 --- a/src/main/java/org/stellar/sdk/xdr/RestoreFootprintOp.java +++ b/src/main/java/org/stellar/sdk/xdr/RestoreFootprintOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,6 +62,32 @@ public boolean equals(Object object) { return Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static RestoreFootprintOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static RestoreFootprintOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ExtensionPoint ext; diff --git a/src/main/java/org/stellar/sdk/xdr/RestoreFootprintResult.java b/src/main/java/org/stellar/sdk/xdr/RestoreFootprintResult.java index 1c0145f19..992cb6da2 100644 --- a/src/main/java/org/stellar/sdk/xdr/RestoreFootprintResult.java +++ b/src/main/java/org/stellar/sdk/xdr/RestoreFootprintResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -95,4 +98,30 @@ public boolean equals(Object object) { RestoreFootprintResult other = (RestoreFootprintResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static RestoreFootprintResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static RestoreFootprintResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/RestoreFootprintResultCode.java b/src/main/java/org/stellar/sdk/xdr/RestoreFootprintResultCode.java index a31823310..03005accb 100644 --- a/src/main/java/org/stellar/sdk/xdr/RestoreFootprintResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/RestoreFootprintResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -57,4 +60,30 @@ public static void encode(XdrDataOutputStream stream, RestoreFootprintResultCode public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static RestoreFootprintResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static RestoreFootprintResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipOp.java b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipOp.java index 6f315559d..9c626c763 100644 --- a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipOp.java +++ b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -137,7 +140,33 @@ public boolean equals(Object object) { && Objects.equal(this.type, other.type); } - public static class RevokeSponsorshipOpSigner { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static RevokeSponsorshipOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static RevokeSponsorshipOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class RevokeSponsorshipOpSigner implements XdrElement { public RevokeSponsorshipOpSigner() {} private AccountID accountID; @@ -194,6 +223,32 @@ public boolean equals(Object object) { && Objects.equal(this.signerKey, other.signerKey); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static RevokeSponsorshipOpSigner fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static RevokeSponsorshipOpSigner fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID accountID; private SignerKey signerKey; diff --git a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResult.java b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResult.java index 4ddc146cd..ad6aa5555 100644 --- a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResult.java +++ b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -104,4 +107,30 @@ public boolean equals(Object object) { RevokeSponsorshipResult other = (RevokeSponsorshipResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static RevokeSponsorshipResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static RevokeSponsorshipResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResultCode.java b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResultCode.java index 970066134..2f8ca595e 100644 --- a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -69,4 +72,30 @@ public static void encode(XdrDataOutputStream stream, RevokeSponsorshipResultCod public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static RevokeSponsorshipResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static RevokeSponsorshipResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipType.java b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipType.java index 7b3278b68..5b568419d 100644 --- a/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipType.java +++ b/src/main/java/org/stellar/sdk/xdr/RevokeSponsorshipType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -50,4 +53,30 @@ public static void encode(XdrDataOutputStream stream, RevokeSponsorshipType valu public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static RevokeSponsorshipType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static RevokeSponsorshipType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCAddress.java b/src/main/java/org/stellar/sdk/xdr/SCAddress.java index f07786859..e3217a128 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCAddress.java +++ b/src/main/java/org/stellar/sdk/xdr/SCAddress.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -131,4 +134,30 @@ public boolean equals(Object object) { && Objects.equal(this.contractId, other.contractId) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCAddress fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCAddress fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCAddressType.java b/src/main/java/org/stellar/sdk/xdr/SCAddressType.java index 06a646f17..f80ce3068 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCAddressType.java +++ b/src/main/java/org/stellar/sdk/xdr/SCAddressType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -49,4 +52,30 @@ public static void encode(XdrDataOutputStream stream, SCAddressType value) throw public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCAddressType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCAddressType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCBytes.java b/src/main/java/org/stellar/sdk/xdr/SCBytes.java index 26b4df89c..0b111ada5 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCBytes.java +++ b/src/main/java/org/stellar/sdk/xdr/SCBytes.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -62,4 +65,30 @@ public boolean equals(Object object) { SCBytes other = (SCBytes) object; return Arrays.equals(this.SCBytes, other.SCBytes); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCBytes fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCBytes fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCContractInstance.java b/src/main/java/org/stellar/sdk/xdr/SCContractInstance.java index c5cd2db3b..d9fe5b6e0 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCContractInstance.java +++ b/src/main/java/org/stellar/sdk/xdr/SCContractInstance.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -80,6 +83,32 @@ public boolean equals(Object object) { && Objects.equal(this.storage, other.storage); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCContractInstance fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCContractInstance fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ContractExecutable executable; private SCMap storage; diff --git a/src/main/java/org/stellar/sdk/xdr/SCEnvMetaEntry.java b/src/main/java/org/stellar/sdk/xdr/SCEnvMetaEntry.java index e31461699..64ac8f1c3 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCEnvMetaEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/SCEnvMetaEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -105,4 +108,30 @@ public boolean equals(Object object) { return Objects.equal(this.interfaceVersion, other.interfaceVersion) && Objects.equal(this.kind, other.kind); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCEnvMetaEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCEnvMetaEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCEnvMetaKind.java b/src/main/java/org/stellar/sdk/xdr/SCEnvMetaKind.java index 423f45e1f..97c82d4d7 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCEnvMetaKind.java +++ b/src/main/java/org/stellar/sdk/xdr/SCEnvMetaKind.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -45,4 +48,30 @@ public static void encode(XdrDataOutputStream stream, SCEnvMetaKind value) throw public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCEnvMetaKind fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCEnvMetaKind fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCError.java b/src/main/java/org/stellar/sdk/xdr/SCError.java index 80cb18b08..c41c9f840 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCError.java +++ b/src/main/java/org/stellar/sdk/xdr/SCError.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -71,6 +74,32 @@ public boolean equals(Object object) { return Objects.equal(this.type, other.type) && Objects.equal(this.code, other.code); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCError fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCError fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCErrorType type; private SCErrorCode code; diff --git a/src/main/java/org/stellar/sdk/xdr/SCErrorCode.java b/src/main/java/org/stellar/sdk/xdr/SCErrorCode.java index d5374df5e..635a68f20 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCErrorCode.java +++ b/src/main/java/org/stellar/sdk/xdr/SCErrorCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -81,4 +84,30 @@ public static void encode(XdrDataOutputStream stream, SCErrorCode value) throws public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCErrorCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCErrorCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCErrorType.java b/src/main/java/org/stellar/sdk/xdr/SCErrorType.java index a1cdd808d..8637ebee6 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCErrorType.java +++ b/src/main/java/org/stellar/sdk/xdr/SCErrorType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -81,4 +84,30 @@ public static void encode(XdrDataOutputStream stream, SCErrorType value) throws public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCErrorType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCErrorType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCMap.java b/src/main/java/org/stellar/sdk/xdr/SCMap.java index bc82a97ef..18579f452 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCMap.java +++ b/src/main/java/org/stellar/sdk/xdr/SCMap.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -66,4 +69,30 @@ public boolean equals(Object object) { SCMap other = (SCMap) object; return Arrays.equals(this.SCMap, other.SCMap); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCMap fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCMap fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCMapEntry.java b/src/main/java/org/stellar/sdk/xdr/SCMapEntry.java index 66c82b895..953813bf6 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCMapEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/SCMapEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -72,6 +75,32 @@ public boolean equals(Object object) { return Objects.equal(this.key, other.key) && Objects.equal(this.val, other.val); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCMapEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCMapEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCVal key; private SCVal val; diff --git a/src/main/java/org/stellar/sdk/xdr/SCMetaEntry.java b/src/main/java/org/stellar/sdk/xdr/SCMetaEntry.java index 2b344cdd5..66006bccf 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCMetaEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/SCMetaEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -104,4 +107,30 @@ public boolean equals(Object object) { SCMetaEntry other = (SCMetaEntry) object; return Objects.equal(this.v0, other.v0) && Objects.equal(this.kind, other.kind); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCMetaEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCMetaEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCMetaKind.java b/src/main/java/org/stellar/sdk/xdr/SCMetaKind.java index 80c2fe476..519e5c416 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCMetaKind.java +++ b/src/main/java/org/stellar/sdk/xdr/SCMetaKind.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -45,4 +48,30 @@ public static void encode(XdrDataOutputStream stream, SCMetaKind value) throws I public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCMetaKind fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCMetaKind fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCMetaV0.java b/src/main/java/org/stellar/sdk/xdr/SCMetaV0.java index 0cb552c5e..65a032f11 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCMetaV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCMetaV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -52,8 +55,8 @@ public void encode(XdrDataOutputStream stream) throws IOException { public static SCMetaV0 decode(XdrDataInputStream stream) throws IOException { SCMetaV0 decodedSCMetaV0 = new SCMetaV0(); - decodedSCMetaV0.key = XdrString.decode(stream, 2147483647); - decodedSCMetaV0.val = XdrString.decode(stream, 2147483647); + decodedSCMetaV0.key = XdrString.decode(stream, Integer.MAX_VALUE); + decodedSCMetaV0.val = XdrString.decode(stream, Integer.MAX_VALUE); return decodedSCMetaV0; } @@ -72,6 +75,32 @@ public boolean equals(Object object) { return Objects.equal(this.key, other.key) && Objects.equal(this.val, other.val); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCMetaV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCMetaV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private XdrString key; private XdrString val; diff --git a/src/main/java/org/stellar/sdk/xdr/SCNonceKey.java b/src/main/java/org/stellar/sdk/xdr/SCNonceKey.java index 3e888fa51..7033ae777 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCNonceKey.java +++ b/src/main/java/org/stellar/sdk/xdr/SCNonceKey.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -58,6 +61,32 @@ public boolean equals(Object object) { return Objects.equal(this.nonce, other.nonce); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCNonceKey fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCNonceKey fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Int64 nonce; diff --git a/src/main/java/org/stellar/sdk/xdr/SCPBallot.java b/src/main/java/org/stellar/sdk/xdr/SCPBallot.java index 2fdfce8ec..ecafbfbb8 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPBallot.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPBallot.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -72,6 +75,32 @@ public boolean equals(Object object) { return Objects.equal(this.counter, other.counter) && Objects.equal(this.value, other.value); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCPBallot fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCPBallot fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 counter; private Value value; diff --git a/src/main/java/org/stellar/sdk/xdr/SCPEnvelope.java b/src/main/java/org/stellar/sdk/xdr/SCPEnvelope.java index 7ff943118..ba74c4a19 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPEnvelope.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPEnvelope.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -73,6 +76,32 @@ public boolean equals(Object object) { && Objects.equal(this.signature, other.signature); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCPEnvelope fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCPEnvelope fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCPStatement statement; private Signature signature; diff --git a/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntry.java b/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntry.java index 94764adda..8aa74c90b 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -104,4 +107,30 @@ public boolean equals(Object object) { SCPHistoryEntry other = (SCPHistoryEntry) object; return Objects.equal(this.v0, other.v0) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCPHistoryEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCPHistoryEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntryV0.java b/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntryV0.java index 2536f0a2a..d566c0d16 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntryV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPHistoryEntryV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -82,6 +85,32 @@ public boolean equals(Object object) { && Objects.equal(this.ledgerMessages, other.ledgerMessages); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCPHistoryEntryV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCPHistoryEntryV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCPQuorumSet[] quorumSets; private LedgerSCPMessages ledgerMessages; diff --git a/src/main/java/org/stellar/sdk/xdr/SCPNomination.java b/src/main/java/org/stellar/sdk/xdr/SCPNomination.java index b0880da67..83f6acab3 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPNomination.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPNomination.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -105,6 +108,32 @@ public boolean equals(Object object) { && Arrays.equals(this.accepted, other.accepted); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCPNomination fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCPNomination fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Hash quorumSetHash; private Value[] votes; diff --git a/src/main/java/org/stellar/sdk/xdr/SCPQuorumSet.java b/src/main/java/org/stellar/sdk/xdr/SCPQuorumSet.java index e691286ff..de5e595ad 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPQuorumSet.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPQuorumSet.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -105,6 +108,32 @@ public boolean equals(Object object) { && Arrays.equals(this.innerSets, other.innerSets); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCPQuorumSet fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCPQuorumSet fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 threshold; private NodeID[] validators; diff --git a/src/main/java/org/stellar/sdk/xdr/SCPStatement.java b/src/main/java/org/stellar/sdk/xdr/SCPStatement.java index fe30c9828..19afe3ad8 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPStatement.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPStatement.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -119,6 +122,32 @@ public boolean equals(Object object) { && Objects.equal(this.pledges, other.pledges); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCPStatement fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCPStatement fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private NodeID nodeID; private Uint64 slotIndex; @@ -148,7 +177,7 @@ public SCPStatement build() { } } - public static class SCPStatementPledges { + public static class SCPStatementPledges implements XdrElement { public SCPStatementPledges() {} SCPStatementType type; @@ -311,7 +340,33 @@ public boolean equals(Object object) { && Objects.equal(this.type, other.type); } - public static class SCPStatementPrepare { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCPStatementPledges fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCPStatementPledges fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class SCPStatementPrepare implements XdrElement { public SCPStatementPrepare() {} private Hash quorumSetHash; @@ -437,6 +492,32 @@ public boolean equals(Object object) { && Objects.equal(this.nH, other.nH); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCPStatementPrepare fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCPStatementPrepare fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Hash quorumSetHash; private SCPBallot ballot; @@ -488,7 +569,7 @@ public SCPStatementPrepare build() { } } - public static class SCPStatementConfirm { + public static class SCPStatementConfirm implements XdrElement { public SCPStatementConfirm() {} private SCPBallot ballot; @@ -585,6 +666,32 @@ public boolean equals(Object object) { && Objects.equal(this.quorumSetHash, other.quorumSetHash); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCPStatementConfirm fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCPStatementConfirm fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCPBallot ballot; private Uint32 nPrepared; @@ -629,7 +736,7 @@ public SCPStatementConfirm build() { } } - public static class SCPStatementExternalize { + public static class SCPStatementExternalize implements XdrElement { public SCPStatementExternalize() {} private SCPBallot commit; @@ -699,6 +806,32 @@ public boolean equals(Object object) { && Objects.equal(this.commitQuorumSetHash, other.commitQuorumSetHash); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCPStatementExternalize fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCPStatementExternalize fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCPBallot commit; private Uint32 nH; diff --git a/src/main/java/org/stellar/sdk/xdr/SCPStatementType.java b/src/main/java/org/stellar/sdk/xdr/SCPStatementType.java index 1297c606a..f5c30b6ba 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCPStatementType.java +++ b/src/main/java/org/stellar/sdk/xdr/SCPStatementType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -57,4 +60,30 @@ public static void encode(XdrDataOutputStream stream, SCPStatementType value) th public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCPStatementType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCPStatementType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecEntry.java b/src/main/java/org/stellar/sdk/xdr/SCSpecEntry.java index 6b0c4b7f8..ce6ecb4f7 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -215,4 +218,30 @@ public boolean equals(Object object) { && Objects.equal(this.udtErrorEnumV0, other.udtErrorEnumV0) && Objects.equal(this.kind, other.kind); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecEntryKind.java b/src/main/java/org/stellar/sdk/xdr/SCSpecEntryKind.java index b4669fd52..f8dd60ab4 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecEntryKind.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecEntryKind.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -61,4 +64,30 @@ public static void encode(XdrDataOutputStream stream, SCSpecEntryKind value) thr public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecEntryKind fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecEntryKind fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecFunctionInputV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecFunctionInputV0.java index bc2befbea..a228df41b 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecFunctionInputV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecFunctionInputV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -88,6 +91,32 @@ public boolean equals(Object object) { && Objects.equal(this.type, other.type); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecFunctionInputV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecFunctionInputV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private XdrString doc; private XdrString name; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecFunctionV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecFunctionV0.java index a616cab12..aab785d87 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecFunctionV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecFunctionV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -119,6 +122,32 @@ public boolean equals(Object object) { && Arrays.equals(this.outputs, other.outputs); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecFunctionV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecFunctionV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private XdrString doc; private SCSymbol name; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecType.java b/src/main/java/org/stellar/sdk/xdr/SCSpecType.java index 7829ff041..ea4bd7f66 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecType.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -151,4 +154,30 @@ public static void encode(XdrDataOutputStream stream, SCSpecType value) throws I public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeBytesN.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeBytesN.java index f00387ccd..e375d69e6 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeBytesN.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeBytesN.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,6 +62,32 @@ public boolean equals(Object object) { return Objects.equal(this.n, other.n); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecTypeBytesN fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecTypeBytesN fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 n; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeDef.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeDef.java index 4efedf536..8688a209f 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeDef.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeDef.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -353,4 +356,30 @@ public boolean equals(Object object) { && Objects.equal(this.udt, other.udt) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecTypeDef fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecTypeDef fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeMap.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeMap.java index c55a50d8e..951bd127e 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeMap.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeMap.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -73,6 +76,32 @@ public boolean equals(Object object) { && Objects.equal(this.valueType, other.valueType); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecTypeMap fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecTypeMap fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCSpecTypeDef keyType; private SCSpecTypeDef valueType; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeOption.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeOption.java index 18dcc55cd..d1d0cb123 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeOption.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeOption.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,6 +62,32 @@ public boolean equals(Object object) { return Objects.equal(this.valueType, other.valueType); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecTypeOption fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecTypeOption fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCSpecTypeDef valueType; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeResult.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeResult.java index 35696f14e..6f30f380f 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeResult.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -73,6 +76,32 @@ public boolean equals(Object object) { && Objects.equal(this.errorType, other.errorType); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecTypeResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecTypeResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCSpecTypeDef okType; private SCSpecTypeDef errorType; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeSet.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeSet.java index 3a09358ee..067604074 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeSet.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeSet.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,6 +62,32 @@ public boolean equals(Object object) { return Objects.equal(this.elementType, other.elementType); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecTypeSet fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecTypeSet fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCSpecTypeDef elementType; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeTuple.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeTuple.java index 664789374..553ec02dd 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeTuple.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeTuple.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -67,6 +70,32 @@ public boolean equals(Object object) { return Arrays.equals(this.valueTypes, other.valueTypes); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecTypeTuple fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecTypeTuple fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCSpecTypeDef[] valueTypes; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeUDT.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeUDT.java index 0a7427f0b..83bf40eca 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeUDT.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeUDT.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,6 +62,32 @@ public boolean equals(Object object) { return Objects.equal(this.name, other.name); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecTypeUDT fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecTypeUDT fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private XdrString name; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeVec.java b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeVec.java index d26aa0995..5ec71dd5f 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecTypeVec.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecTypeVec.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,6 +62,32 @@ public boolean equals(Object object) { return Objects.equal(this.elementType, other.elementType); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecTypeVec fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecTypeVec fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCSpecTypeDef elementType; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumCaseV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumCaseV0.java index d2477e240..a43a8c8cb 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumCaseV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumCaseV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -88,6 +91,32 @@ public boolean equals(Object object) { && Objects.equal(this.value, other.value); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecUDTEnumCaseV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecUDTEnumCaseV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private XdrString doc; private XdrString name; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumV0.java index 6af62f4bf..11fa51cc4 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTEnumV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -110,6 +113,32 @@ public boolean equals(Object object) { && Arrays.equals(this.cases, other.cases); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecUDTEnumV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecUDTEnumV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private XdrString doc; private XdrString lib; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumCaseV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumCaseV0.java index 7488ff854..dcb4f669b 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumCaseV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumCaseV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -88,6 +91,32 @@ public boolean equals(Object object) { && Objects.equal(this.value, other.value); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecUDTErrorEnumCaseV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecUDTErrorEnumCaseV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private XdrString doc; private XdrString name; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumV0.java index 887768faa..aa15970bd 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTErrorEnumV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -111,6 +114,32 @@ public boolean equals(Object object) { && Arrays.equals(this.cases, other.cases); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecUDTErrorEnumV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecUDTErrorEnumV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private XdrString doc; private XdrString lib; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructFieldV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructFieldV0.java index 4aacf1a40..015a73b4c 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructFieldV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructFieldV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -88,6 +91,32 @@ public boolean equals(Object object) { && Objects.equal(this.type, other.type); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecUDTStructFieldV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecUDTStructFieldV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private XdrString doc; private XdrString name; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructV0.java index 26be1f931..ba72eb34f 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTStructV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -110,6 +113,32 @@ public boolean equals(Object object) { && Arrays.equals(this.fields, other.fields); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecUDTStructV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecUDTStructV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private XdrString doc; private XdrString lib; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseTupleV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseTupleV0.java index b678f4c1a..8f66aea79 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseTupleV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseTupleV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -97,6 +100,32 @@ public boolean equals(Object object) { && Arrays.equals(this.type, other.type); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecUDTUnionCaseTupleV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecUDTUnionCaseTupleV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private XdrString doc; private XdrString name; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0.java index 301c06c93..14eb90fc9 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -132,4 +135,30 @@ public boolean equals(Object object) { && Objects.equal(this.tupleCase, other.tupleCase) && Objects.equal(this.kind, other.kind); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecUDTUnionCaseV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecUDTUnionCaseV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0Kind.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0Kind.java index f47dd3ee3..378dd6293 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0Kind.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseV0Kind.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -50,4 +53,30 @@ public static void encode(XdrDataOutputStream stream, SCSpecUDTUnionCaseV0Kind v public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecUDTUnionCaseV0Kind fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecUDTUnionCaseV0Kind fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseVoidV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseVoidV0.java index 25f9db25f..0e4387425 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseVoidV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionCaseVoidV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -73,6 +76,32 @@ public boolean equals(Object object) { return Objects.equal(this.doc, other.doc) && Objects.equal(this.name, other.name); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecUDTUnionCaseVoidV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecUDTUnionCaseVoidV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private XdrString doc; private XdrString name; diff --git a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionV0.java b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionV0.java index 7a8be142f..2f6f311f4 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionV0.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSpecUDTUnionV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -110,6 +113,32 @@ public boolean equals(Object object) { && Arrays.equals(this.cases, other.cases); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSpecUDTUnionV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSpecUDTUnionV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private XdrString doc; private XdrString lib; diff --git a/src/main/java/org/stellar/sdk/xdr/SCString.java b/src/main/java/org/stellar/sdk/xdr/SCString.java index 916a608ce..ed1a0f5e0 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCString.java +++ b/src/main/java/org/stellar/sdk/xdr/SCString.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -41,7 +44,7 @@ public void encode(XdrDataOutputStream stream) throws IOException { public static SCString decode(XdrDataInputStream stream) throws IOException { SCString decodedSCString = new SCString(); - decodedSCString.SCString = XdrString.decode(stream, 2147483647); + decodedSCString.SCString = XdrString.decode(stream, Integer.MAX_VALUE); return decodedSCString; } @@ -59,4 +62,30 @@ public boolean equals(Object object) { SCString other = (SCString) object; return Objects.equal(this.SCString, other.SCString); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCString fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCString fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCSymbol.java b/src/main/java/org/stellar/sdk/xdr/SCSymbol.java index ce7f02918..4ffd515fa 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCSymbol.java +++ b/src/main/java/org/stellar/sdk/xdr/SCSymbol.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,4 +62,30 @@ public boolean equals(Object object) { SCSymbol other = (SCSymbol) object; return Objects.equal(this.SCSymbol, other.SCSymbol); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCSymbol fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCSymbol fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCVal.java b/src/main/java/org/stellar/sdk/xdr/SCVal.java index 6c29d68c6..94838a0d6 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCVal.java +++ b/src/main/java/org/stellar/sdk/xdr/SCVal.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -661,4 +664,30 @@ public boolean equals(Object object) { && Objects.equal(this.instance, other.instance) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCVal fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCVal fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCValType.java b/src/main/java/org/stellar/sdk/xdr/SCValType.java index e6ad5512b..5a37a337d 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCValType.java +++ b/src/main/java/org/stellar/sdk/xdr/SCValType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -159,4 +162,30 @@ public static void encode(XdrDataOutputStream stream, SCValType value) throws IO public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCValType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCValType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SCVec.java b/src/main/java/org/stellar/sdk/xdr/SCVec.java index 69594dc52..9a1ba2fd5 100644 --- a/src/main/java/org/stellar/sdk/xdr/SCVec.java +++ b/src/main/java/org/stellar/sdk/xdr/SCVec.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -66,4 +69,30 @@ public boolean equals(Object object) { SCVec other = (SCVec) object; return Arrays.equals(this.SCVec, other.SCVec); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SCVec fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SCVec fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SendMore.java b/src/main/java/org/stellar/sdk/xdr/SendMore.java index 44738a60e..eae1eb499 100644 --- a/src/main/java/org/stellar/sdk/xdr/SendMore.java +++ b/src/main/java/org/stellar/sdk/xdr/SendMore.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,6 +62,32 @@ public boolean equals(Object object) { return Objects.equal(this.numMessages, other.numMessages); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SendMore fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SendMore fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 numMessages; diff --git a/src/main/java/org/stellar/sdk/xdr/SendMoreExtended.java b/src/main/java/org/stellar/sdk/xdr/SendMoreExtended.java index 0656a3dc2..2336ed9ff 100644 --- a/src/main/java/org/stellar/sdk/xdr/SendMoreExtended.java +++ b/src/main/java/org/stellar/sdk/xdr/SendMoreExtended.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -73,6 +76,32 @@ public boolean equals(Object object) { && Objects.equal(this.numBytes, other.numBytes); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SendMoreExtended fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SendMoreExtended fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 numMessages; private Uint32 numBytes; diff --git a/src/main/java/org/stellar/sdk/xdr/SequenceNumber.java b/src/main/java/org/stellar/sdk/xdr/SequenceNumber.java index 8a8178d5e..8254459d9 100644 --- a/src/main/java/org/stellar/sdk/xdr/SequenceNumber.java +++ b/src/main/java/org/stellar/sdk/xdr/SequenceNumber.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,4 +62,30 @@ public boolean equals(Object object) { SequenceNumber other = (SequenceNumber) object; return Objects.equal(this.SequenceNumber, other.SequenceNumber); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SequenceNumber fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SequenceNumber fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SetOptionsOp.java b/src/main/java/org/stellar/sdk/xdr/SetOptionsOp.java index 39a561e38..d5270c794 100644 --- a/src/main/java/org/stellar/sdk/xdr/SetOptionsOp.java +++ b/src/main/java/org/stellar/sdk/xdr/SetOptionsOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -259,6 +262,32 @@ public boolean equals(Object object) { && Objects.equal(this.signer, other.signer); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SetOptionsOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SetOptionsOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID inflationDest; private Uint32 clearFlags; diff --git a/src/main/java/org/stellar/sdk/xdr/SetOptionsResult.java b/src/main/java/org/stellar/sdk/xdr/SetOptionsResult.java index 422c23f68..ca3b917a5 100644 --- a/src/main/java/org/stellar/sdk/xdr/SetOptionsResult.java +++ b/src/main/java/org/stellar/sdk/xdr/SetOptionsResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -118,4 +121,30 @@ public boolean equals(Object object) { SetOptionsResult other = (SetOptionsResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SetOptionsResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SetOptionsResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SetOptionsResultCode.java b/src/main/java/org/stellar/sdk/xdr/SetOptionsResultCode.java index 7d874cddd..4d7eb1c5b 100644 --- a/src/main/java/org/stellar/sdk/xdr/SetOptionsResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/SetOptionsResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -89,4 +92,30 @@ public static void encode(XdrDataOutputStream stream, SetOptionsResultCode value public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SetOptionsResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SetOptionsResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsOp.java b/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsOp.java index 3a016082c..3b7723965 100644 --- a/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsOp.java +++ b/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsOp.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -103,6 +106,32 @@ public boolean equals(Object object) { && Objects.equal(this.setFlags, other.setFlags); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SetTrustLineFlagsOp fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SetTrustLineFlagsOp fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID trustor; private Asset asset; diff --git a/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResult.java b/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResult.java index 30f608e58..87b30607d 100644 --- a/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResult.java +++ b/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -104,4 +107,30 @@ public boolean equals(Object object) { SetTrustLineFlagsResult other = (SetTrustLineFlagsResult) object; return Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SetTrustLineFlagsResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SetTrustLineFlagsResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResultCode.java b/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResultCode.java index e26de75a6..68a9e5466 100644 --- a/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/SetTrustLineFlagsResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -70,4 +73,30 @@ public static void encode(XdrDataOutputStream stream, SetTrustLineFlagsResultCod public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SetTrustLineFlagsResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SetTrustLineFlagsResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Signature.java b/src/main/java/org/stellar/sdk/xdr/Signature.java index e0b8689f1..ece133856 100644 --- a/src/main/java/org/stellar/sdk/xdr/Signature.java +++ b/src/main/java/org/stellar/sdk/xdr/Signature.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -63,4 +66,30 @@ public boolean equals(Object object) { Signature other = (Signature) object; return Arrays.equals(this.Signature, other.Signature); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Signature fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Signature fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SignatureHint.java b/src/main/java/org/stellar/sdk/xdr/SignatureHint.java index 0dba1fca7..f4b48399a 100644 --- a/src/main/java/org/stellar/sdk/xdr/SignatureHint.java +++ b/src/main/java/org/stellar/sdk/xdr/SignatureHint.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -62,4 +65,30 @@ public boolean equals(Object object) { SignatureHint other = (SignatureHint) object; return Arrays.equals(this.SignatureHint, other.SignatureHint); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SignatureHint fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SignatureHint fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SignedSurveyRequestMessage.java b/src/main/java/org/stellar/sdk/xdr/SignedSurveyRequestMessage.java index a4efce260..0a44490ae 100644 --- a/src/main/java/org/stellar/sdk/xdr/SignedSurveyRequestMessage.java +++ b/src/main/java/org/stellar/sdk/xdr/SignedSurveyRequestMessage.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -74,6 +77,32 @@ public boolean equals(Object object) { && Objects.equal(this.request, other.request); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SignedSurveyRequestMessage fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SignedSurveyRequestMessage fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Signature requestSignature; private SurveyRequestMessage request; diff --git a/src/main/java/org/stellar/sdk/xdr/SignedSurveyResponseMessage.java b/src/main/java/org/stellar/sdk/xdr/SignedSurveyResponseMessage.java index b611590a9..44f44e13b 100644 --- a/src/main/java/org/stellar/sdk/xdr/SignedSurveyResponseMessage.java +++ b/src/main/java/org/stellar/sdk/xdr/SignedSurveyResponseMessage.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -75,6 +78,32 @@ public boolean equals(Object object) { && Objects.equal(this.response, other.response); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SignedSurveyResponseMessage fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SignedSurveyResponseMessage fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Signature responseSignature; private SurveyResponseMessage response; diff --git a/src/main/java/org/stellar/sdk/xdr/Signer.java b/src/main/java/org/stellar/sdk/xdr/Signer.java index 594bbf4f2..484e661b7 100644 --- a/src/main/java/org/stellar/sdk/xdr/Signer.java +++ b/src/main/java/org/stellar/sdk/xdr/Signer.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -71,6 +74,32 @@ public boolean equals(Object object) { return Objects.equal(this.key, other.key) && Objects.equal(this.weight, other.weight); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Signer fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Signer fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SignerKey key; private Uint32 weight; diff --git a/src/main/java/org/stellar/sdk/xdr/SignerKey.java b/src/main/java/org/stellar/sdk/xdr/SignerKey.java index c2b0d660d..d91d722e6 100644 --- a/src/main/java/org/stellar/sdk/xdr/SignerKey.java +++ b/src/main/java/org/stellar/sdk/xdr/SignerKey.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -194,7 +197,33 @@ public boolean equals(Object object) { && Objects.equal(this.type, other.type); } - public static class SignerKeyEd25519SignedPayload { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SignerKey fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SignerKey fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class SignerKeyEd25519SignedPayload implements XdrElement { public SignerKeyEd25519SignedPayload() {} private Uint256 ed25519; @@ -258,6 +287,32 @@ public boolean equals(Object object) { && Arrays.equals(this.payload, other.payload); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SignerKeyEd25519SignedPayload fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SignerKeyEd25519SignedPayload fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint256 ed25519; private byte[] payload; diff --git a/src/main/java/org/stellar/sdk/xdr/SignerKeyType.java b/src/main/java/org/stellar/sdk/xdr/SignerKeyType.java index f5fb66af0..85e62c944 100644 --- a/src/main/java/org/stellar/sdk/xdr/SignerKeyType.java +++ b/src/main/java/org/stellar/sdk/xdr/SignerKeyType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -57,4 +60,30 @@ public static void encode(XdrDataOutputStream stream, SignerKeyType value) throw public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SignerKeyType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SignerKeyType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SimplePaymentResult.java b/src/main/java/org/stellar/sdk/xdr/SimplePaymentResult.java index 104b958d6..ff690be75 100644 --- a/src/main/java/org/stellar/sdk/xdr/SimplePaymentResult.java +++ b/src/main/java/org/stellar/sdk/xdr/SimplePaymentResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -88,6 +91,32 @@ public boolean equals(Object object) { && Objects.equal(this.amount, other.amount); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SimplePaymentResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SimplePaymentResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID destination; private Asset asset; diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanAddressCredentials.java b/src/main/java/org/stellar/sdk/xdr/SorobanAddressCredentials.java index 272a08b3a..4ee671117 100644 --- a/src/main/java/org/stellar/sdk/xdr/SorobanAddressCredentials.java +++ b/src/main/java/org/stellar/sdk/xdr/SorobanAddressCredentials.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -103,6 +106,32 @@ public boolean equals(Object object) { && Objects.equal(this.signatureArgs, other.signatureArgs); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SorobanAddressCredentials fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SorobanAddressCredentials fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCAddress address; private Int64 nonce; diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizationEntry.java b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizationEntry.java index 74da85821..14458a411 100644 --- a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizationEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizationEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -74,6 +77,32 @@ public boolean equals(Object object) { && Objects.equal(this.rootInvocation, other.rootInvocation); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SorobanAuthorizationEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SorobanAuthorizationEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SorobanCredentials credentials; private SorobanAuthorizedInvocation rootInvocation; diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedContractFunction.java b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedContractFunction.java index f690f590d..5b2c29bb5 100644 --- a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedContractFunction.java +++ b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedContractFunction.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -91,6 +94,32 @@ public boolean equals(Object object) { && Objects.equal(this.args, other.args); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SorobanAuthorizedContractFunction fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SorobanAuthorizedContractFunction fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SCAddress contractAddress; private SCSymbol functionName; diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunction.java b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunction.java index c0ef0f14c..b988e570d 100644 --- a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunction.java +++ b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunction.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -134,4 +137,30 @@ public boolean equals(Object object) { && Objects.equal(this.createContractHostFn, other.createContractHostFn) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SorobanAuthorizedFunction fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SorobanAuthorizedFunction fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunctionType.java b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunctionType.java index d4cb00caa..c6b379c35 100644 --- a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunctionType.java +++ b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedFunctionType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -50,4 +53,30 @@ public static void encode(XdrDataOutputStream stream, SorobanAuthorizedFunctionT public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SorobanAuthorizedFunctionType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SorobanAuthorizedFunctionType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedInvocation.java b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedInvocation.java index 994508930..1a2ffb74a 100644 --- a/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedInvocation.java +++ b/src/main/java/org/stellar/sdk/xdr/SorobanAuthorizedInvocation.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -87,6 +90,32 @@ public boolean equals(Object object) { && Arrays.equals(this.subInvocations, other.subInvocations); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SorobanAuthorizedInvocation fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SorobanAuthorizedInvocation fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private SorobanAuthorizedFunction function; private SorobanAuthorizedInvocation[] subInvocations; diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanCredentials.java b/src/main/java/org/stellar/sdk/xdr/SorobanCredentials.java index 88a21e72a..3500dedef 100644 --- a/src/main/java/org/stellar/sdk/xdr/SorobanCredentials.java +++ b/src/main/java/org/stellar/sdk/xdr/SorobanCredentials.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -110,4 +113,30 @@ public boolean equals(Object object) { SorobanCredentials other = (SorobanCredentials) object; return Objects.equal(this.address, other.address) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SorobanCredentials fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SorobanCredentials fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanCredentialsType.java b/src/main/java/org/stellar/sdk/xdr/SorobanCredentialsType.java index 85ebf85f7..2b802b010 100644 --- a/src/main/java/org/stellar/sdk/xdr/SorobanCredentialsType.java +++ b/src/main/java/org/stellar/sdk/xdr/SorobanCredentialsType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -50,4 +53,30 @@ public static void encode(XdrDataOutputStream stream, SorobanCredentialsType val public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SorobanCredentialsType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SorobanCredentialsType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanResources.java b/src/main/java/org/stellar/sdk/xdr/SorobanResources.java index 531b5794e..9ebacdd0e 100644 --- a/src/main/java/org/stellar/sdk/xdr/SorobanResources.java +++ b/src/main/java/org/stellar/sdk/xdr/SorobanResources.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -23,7 +26,7 @@ // uint32 writeBytes; // // // Maximum size of dynamic metadata produced by this contract ( -// // bytes read from ledger + bytes written to ledger + event bytes written to meta). +// // currently only includes the events). // uint32 extendedMetaDataSizeBytes; // }; @@ -128,6 +131,32 @@ public boolean equals(Object object) { && Objects.equal(this.extendedMetaDataSizeBytes, other.extendedMetaDataSizeBytes); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SorobanResources fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SorobanResources fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private LedgerFootprint footprint; private Uint32 instructions; diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanTransactionData.java b/src/main/java/org/stellar/sdk/xdr/SorobanTransactionData.java index d8fff4305..87db2f534 100644 --- a/src/main/java/org/stellar/sdk/xdr/SorobanTransactionData.java +++ b/src/main/java/org/stellar/sdk/xdr/SorobanTransactionData.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -89,6 +92,32 @@ public boolean equals(Object object) { && Objects.equal(this.refundableFee, other.refundableFee); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SorobanTransactionData fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SorobanTransactionData fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ExtensionPoint ext; private SorobanResources resources; diff --git a/src/main/java/org/stellar/sdk/xdr/SorobanTransactionMeta.java b/src/main/java/org/stellar/sdk/xdr/SorobanTransactionMeta.java index 396cad274..018214361 100644 --- a/src/main/java/org/stellar/sdk/xdr/SorobanTransactionMeta.java +++ b/src/main/java/org/stellar/sdk/xdr/SorobanTransactionMeta.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -129,6 +132,32 @@ public boolean equals(Object object) { && Arrays.equals(this.diagnosticEvents, other.diagnosticEvents); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SorobanTransactionMeta fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SorobanTransactionMeta fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ExtensionPoint ext; private ContractEvent[] events; diff --git a/src/main/java/org/stellar/sdk/xdr/SponsorshipDescriptor.java b/src/main/java/org/stellar/sdk/xdr/SponsorshipDescriptor.java index 9f85dc4ee..d93cf6a51 100644 --- a/src/main/java/org/stellar/sdk/xdr/SponsorshipDescriptor.java +++ b/src/main/java/org/stellar/sdk/xdr/SponsorshipDescriptor.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -68,4 +71,30 @@ public boolean equals(Object object) { SponsorshipDescriptor other = (SponsorshipDescriptor) object; return Objects.equal(this.SponsorshipDescriptor, other.SponsorshipDescriptor); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SponsorshipDescriptor fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SponsorshipDescriptor fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/StateExpirationSettings.java b/src/main/java/org/stellar/sdk/xdr/StateExpirationSettings.java index 2686ce32f..5fb509169 100644 --- a/src/main/java/org/stellar/sdk/xdr/StateExpirationSettings.java +++ b/src/main/java/org/stellar/sdk/xdr/StateExpirationSettings.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -188,6 +191,32 @@ public boolean equals(Object object) { && Objects.equal(this.evictionScanSize, other.evictionScanSize); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static StateExpirationSettings fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static StateExpirationSettings fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 maxEntryExpiration; private Uint32 minTempEntryExpiration; diff --git a/src/main/java/org/stellar/sdk/xdr/StellarMessage.java b/src/main/java/org/stellar/sdk/xdr/StellarMessage.java index 18500e468..28f2fd92e 100644 --- a/src/main/java/org/stellar/sdk/xdr/StellarMessage.java +++ b/src/main/java/org/stellar/sdk/xdr/StellarMessage.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -620,4 +623,30 @@ public boolean equals(Object object) { && Objects.equal(this.floodDemand, other.floodDemand) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static StellarMessage fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static StellarMessage fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/StellarValue.java b/src/main/java/org/stellar/sdk/xdr/StellarValue.java index 38f0cec12..881eafb0d 100644 --- a/src/main/java/org/stellar/sdk/xdr/StellarValue.java +++ b/src/main/java/org/stellar/sdk/xdr/StellarValue.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -126,6 +129,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static StellarValue fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static StellarValue fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Hash txSetHash; private TimePoint closeTime; @@ -162,7 +191,7 @@ public StellarValue build() { } } - public static class StellarValueExt { + public static class StellarValueExt implements XdrElement { public StellarValueExt() {} StellarValueType v; @@ -254,5 +283,31 @@ public boolean equals(Object object) { return Objects.equal(this.lcValueSignature, other.lcValueSignature) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static StellarValueExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static StellarValueExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/StellarValueType.java b/src/main/java/org/stellar/sdk/xdr/StellarValueType.java index 912103727..510dc3f6c 100644 --- a/src/main/java/org/stellar/sdk/xdr/StellarValueType.java +++ b/src/main/java/org/stellar/sdk/xdr/StellarValueType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -49,4 +52,30 @@ public static void encode(XdrDataOutputStream stream, StellarValueType value) th public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static StellarValueType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static StellarValueType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/StoredTransactionSet.java b/src/main/java/org/stellar/sdk/xdr/StoredTransactionSet.java index f9e41f8df..ae3c5ad03 100644 --- a/src/main/java/org/stellar/sdk/xdr/StoredTransactionSet.java +++ b/src/main/java/org/stellar/sdk/xdr/StoredTransactionSet.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -132,4 +135,30 @@ public boolean equals(Object object) { && Objects.equal(this.generalizedTxSet, other.generalizedTxSet) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static StoredTransactionSet fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static StoredTransactionSet fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/String32.java b/src/main/java/org/stellar/sdk/xdr/String32.java index 1f130b881..9fa8f9320 100644 --- a/src/main/java/org/stellar/sdk/xdr/String32.java +++ b/src/main/java/org/stellar/sdk/xdr/String32.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,4 +62,30 @@ public boolean equals(Object object) { String32 other = (String32) object; return Objects.equal(this.string32, other.string32); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static String32 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static String32 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/String64.java b/src/main/java/org/stellar/sdk/xdr/String64.java index cb3ea069f..497f0e732 100644 --- a/src/main/java/org/stellar/sdk/xdr/String64.java +++ b/src/main/java/org/stellar/sdk/xdr/String64.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,4 +62,30 @@ public boolean equals(Object object) { String64 other = (String64) object; return Objects.equal(this.string64, other.string64); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static String64 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static String64 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SurveyMessageCommandType.java b/src/main/java/org/stellar/sdk/xdr/SurveyMessageCommandType.java index 0c2b0ed1b..c72db98a1 100644 --- a/src/main/java/org/stellar/sdk/xdr/SurveyMessageCommandType.java +++ b/src/main/java/org/stellar/sdk/xdr/SurveyMessageCommandType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -46,4 +49,30 @@ public static void encode(XdrDataOutputStream stream, SurveyMessageCommandType v public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SurveyMessageCommandType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SurveyMessageCommandType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SurveyMessageResponseType.java b/src/main/java/org/stellar/sdk/xdr/SurveyMessageResponseType.java index 77b2d423d..2df60adfd 100644 --- a/src/main/java/org/stellar/sdk/xdr/SurveyMessageResponseType.java +++ b/src/main/java/org/stellar/sdk/xdr/SurveyMessageResponseType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -50,4 +53,30 @@ public static void encode(XdrDataOutputStream stream, SurveyMessageResponseType public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SurveyMessageResponseType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SurveyMessageResponseType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SurveyRequestMessage.java b/src/main/java/org/stellar/sdk/xdr/SurveyRequestMessage.java index 6aa03b9dd..81f92b543 100644 --- a/src/main/java/org/stellar/sdk/xdr/SurveyRequestMessage.java +++ b/src/main/java/org/stellar/sdk/xdr/SurveyRequestMessage.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -121,6 +124,32 @@ public boolean equals(Object object) { && Objects.equal(this.commandType, other.commandType); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SurveyRequestMessage fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SurveyRequestMessage fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private NodeID surveyorPeerID; private NodeID surveyedPeerID; diff --git a/src/main/java/org/stellar/sdk/xdr/SurveyResponseBody.java b/src/main/java/org/stellar/sdk/xdr/SurveyResponseBody.java index 6bbe9e508..75cd873c5 100644 --- a/src/main/java/org/stellar/sdk/xdr/SurveyResponseBody.java +++ b/src/main/java/org/stellar/sdk/xdr/SurveyResponseBody.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -131,4 +134,30 @@ public boolean equals(Object object) { && Objects.equal(this.topologyResponseBodyV1, other.topologyResponseBodyV1) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SurveyResponseBody fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SurveyResponseBody fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/SurveyResponseMessage.java b/src/main/java/org/stellar/sdk/xdr/SurveyResponseMessage.java index e806f88a3..843f1d6b4 100644 --- a/src/main/java/org/stellar/sdk/xdr/SurveyResponseMessage.java +++ b/src/main/java/org/stellar/sdk/xdr/SurveyResponseMessage.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -121,6 +124,32 @@ public boolean equals(Object object) { && Objects.equal(this.encryptedBody, other.encryptedBody); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static SurveyResponseMessage fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static SurveyResponseMessage fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private NodeID surveyorPeerID; private NodeID surveyedPeerID; diff --git a/src/main/java/org/stellar/sdk/xdr/ThresholdIndexes.java b/src/main/java/org/stellar/sdk/xdr/ThresholdIndexes.java index a67d5c1eb..5702020c0 100644 --- a/src/main/java/org/stellar/sdk/xdr/ThresholdIndexes.java +++ b/src/main/java/org/stellar/sdk/xdr/ThresholdIndexes.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -57,4 +60,30 @@ public static void encode(XdrDataOutputStream stream, ThresholdIndexes value) th public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static ThresholdIndexes fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static ThresholdIndexes fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Thresholds.java b/src/main/java/org/stellar/sdk/xdr/Thresholds.java index bea371c22..3c32de1bf 100644 --- a/src/main/java/org/stellar/sdk/xdr/Thresholds.java +++ b/src/main/java/org/stellar/sdk/xdr/Thresholds.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -62,4 +65,30 @@ public boolean equals(Object object) { Thresholds other = (Thresholds) object; return Arrays.equals(this.Thresholds, other.Thresholds); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Thresholds fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Thresholds fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/TimeBounds.java b/src/main/java/org/stellar/sdk/xdr/TimeBounds.java index 4d94d37ce..875b3d0f5 100644 --- a/src/main/java/org/stellar/sdk/xdr/TimeBounds.java +++ b/src/main/java/org/stellar/sdk/xdr/TimeBounds.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -72,6 +75,32 @@ public boolean equals(Object object) { return Objects.equal(this.minTime, other.minTime) && Objects.equal(this.maxTime, other.maxTime); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TimeBounds fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TimeBounds fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private TimePoint minTime; private TimePoint maxTime; diff --git a/src/main/java/org/stellar/sdk/xdr/TimePoint.java b/src/main/java/org/stellar/sdk/xdr/TimePoint.java index e80c7170b..f82679331 100644 --- a/src/main/java/org/stellar/sdk/xdr/TimePoint.java +++ b/src/main/java/org/stellar/sdk/xdr/TimePoint.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -59,4 +62,30 @@ public boolean equals(Object object) { TimePoint other = (TimePoint) object; return Objects.equal(this.TimePoint, other.TimePoint); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TimePoint fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TimePoint fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV0.java b/src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV0.java index 0bbd9f6b9..7a43b161f 100644 --- a/src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV0.java +++ b/src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -107,6 +110,32 @@ public boolean equals(Object object) { && Objects.equal(this.totalOutboundPeerCount, other.totalOutboundPeerCount); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TopologyResponseBodyV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TopologyResponseBodyV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private PeerStatList inboundPeers; private PeerStatList outboundPeers; diff --git a/src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV1.java b/src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV1.java index 874a309c0..c8059f697 100644 --- a/src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV1.java +++ b/src/main/java/org/stellar/sdk/xdr/TopologyResponseBodyV1.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -138,6 +141,32 @@ public boolean equals(Object object) { && Objects.equal(this.maxOutboundPeerCount, other.maxOutboundPeerCount); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TopologyResponseBodyV1 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TopologyResponseBodyV1 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private PeerStatList inboundPeers; private PeerStatList outboundPeers; diff --git a/src/main/java/org/stellar/sdk/xdr/Transaction.java b/src/main/java/org/stellar/sdk/xdr/Transaction.java index 1fb66aaf5..f5cf25588 100644 --- a/src/main/java/org/stellar/sdk/xdr/Transaction.java +++ b/src/main/java/org/stellar/sdk/xdr/Transaction.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -177,6 +180,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Transaction fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Transaction fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private MuxedAccount sourceAccount; private Uint32 fee; @@ -234,7 +263,7 @@ public Transaction build() { } } - public static class TransactionExt { + public static class TransactionExt implements XdrElement { public TransactionExt() {} Integer v; @@ -325,5 +354,31 @@ public boolean equals(Object object) { TransactionExt other = (TransactionExt) object; return Objects.equal(this.sorobanData, other.sorobanData) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionEnvelope.java b/src/main/java/org/stellar/sdk/xdr/TransactionEnvelope.java index 4befb76cd..c837b112c 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionEnvelope.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionEnvelope.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -158,4 +161,30 @@ public boolean equals(Object object) { && Objects.equal(this.feeBump, other.feeBump) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionEnvelope fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionEnvelope fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionHistoryEntry.java b/src/main/java/org/stellar/sdk/xdr/TransactionHistoryEntry.java index a5f59ede7..f270ef9c8 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionHistoryEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionHistoryEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -97,6 +100,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionHistoryEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionHistoryEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 ledgerSeq; private TransactionSet txSet; @@ -126,7 +155,7 @@ public TransactionHistoryEntry build() { } } - public static class TransactionHistoryEntryExt { + public static class TransactionHistoryEntryExt implements XdrElement { public TransactionHistoryEntryExt() {} Integer v; @@ -222,5 +251,31 @@ public boolean equals(Object object) { return Objects.equal(this.generalizedTxSet, other.generalizedTxSet) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionHistoryEntryExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionHistoryEntryExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionHistoryResultEntry.java b/src/main/java/org/stellar/sdk/xdr/TransactionHistoryResultEntry.java index 6c024bcde..c4431b7bb 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionHistoryResultEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionHistoryResultEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -97,6 +100,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionHistoryResultEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionHistoryResultEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint32 ledgerSeq; private TransactionResultSet txResultSet; @@ -126,7 +155,7 @@ public TransactionHistoryResultEntry build() { } } - public static class TransactionHistoryResultEntryExt { + public static class TransactionHistoryResultEntryExt implements XdrElement { public TransactionHistoryResultEntryExt() {} Integer v; @@ -198,5 +227,31 @@ public boolean equals(Object object) { TransactionHistoryResultEntryExt other = (TransactionHistoryResultEntryExt) object; return Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionHistoryResultEntryExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionHistoryResultEntryExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionMeta.java b/src/main/java/org/stellar/sdk/xdr/TransactionMeta.java index 3e23ca42c..e774bf88e 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionMeta.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionMeta.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -192,4 +195,30 @@ public boolean equals(Object object) { && Objects.equal(this.v3, other.v3) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionMeta fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionMeta fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionMetaV1.java b/src/main/java/org/stellar/sdk/xdr/TransactionMetaV1.java index 5eb2e440c..5e1eacca0 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionMetaV1.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionMetaV1.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -82,6 +85,32 @@ public boolean equals(Object object) { && Arrays.equals(this.operations, other.operations); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionMetaV1 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionMetaV1 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private LedgerEntryChanges txChanges; private OperationMeta[] operations; diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionMetaV2.java b/src/main/java/org/stellar/sdk/xdr/TransactionMetaV2.java index 6980da5c6..08e04a479 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionMetaV2.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionMetaV2.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -99,6 +102,32 @@ public boolean equals(Object object) { && Objects.equal(this.txChangesAfter, other.txChangesAfter); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionMetaV2 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionMetaV2 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private LedgerEntryChanges txChangesBefore; private OperationMeta[] operations; diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionMetaV3.java b/src/main/java/org/stellar/sdk/xdr/TransactionMetaV3.java index fe0112b41..fa335d95d 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionMetaV3.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionMetaV3.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -141,6 +144,32 @@ public boolean equals(Object object) { && Objects.equal(this.sorobanMeta, other.sorobanMeta); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionMetaV3 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionMetaV3 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private ExtensionPoint ext; private LedgerEntryChanges txChangesBefore; diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionPhase.java b/src/main/java/org/stellar/sdk/xdr/TransactionPhase.java index 737f994e1..fdda2be93 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionPhase.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionPhase.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -113,4 +116,30 @@ public boolean equals(Object object) { TransactionPhase other = (TransactionPhase) object; return Arrays.equals(this.v0Components, other.v0Components) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionPhase fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionPhase fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionResult.java b/src/main/java/org/stellar/sdk/xdr/TransactionResult.java index 34a68ea31..d4f310bf5 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionResult.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionResult.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -122,6 +125,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Int64 feeCharged; private TransactionResultResult result; @@ -151,7 +180,7 @@ public TransactionResult build() { } } - public static class TransactionResultResult { + public static class TransactionResultResult implements XdrElement { public TransactionResultResult() {} TransactionResultCode code; @@ -309,9 +338,35 @@ public boolean equals(Object object) { && Arrays.equals(this.results, other.results) && Objects.equal(this.code, other.code); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionResultResult fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionResultResult fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } - public static class TransactionResultExt { + public static class TransactionResultExt implements XdrElement { public TransactionResultExt() {} Integer v; @@ -380,5 +435,31 @@ public boolean equals(Object object) { TransactionResultExt other = (TransactionResultExt) object; return Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionResultExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionResultExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionResultCode.java b/src/main/java/org/stellar/sdk/xdr/TransactionResultCode.java index 79bfb63c6..8f0d827df 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionResultCode.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -124,4 +127,30 @@ public static void encode(XdrDataOutputStream stream, TransactionResultCode valu public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionResultCode fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionResultCode fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionResultMeta.java b/src/main/java/org/stellar/sdk/xdr/TransactionResultMeta.java index c67b9ef9b..5c2009027 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionResultMeta.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionResultMeta.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -88,6 +91,32 @@ public boolean equals(Object object) { && Objects.equal(this.txApplyProcessing, other.txApplyProcessing); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionResultMeta fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionResultMeta fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private TransactionResultPair result; private LedgerEntryChanges feeProcessing; diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionResultPair.java b/src/main/java/org/stellar/sdk/xdr/TransactionResultPair.java index 82667278f..261a02976 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionResultPair.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionResultPair.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -74,6 +77,32 @@ public boolean equals(Object object) { && Objects.equal(this.result, other.result); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionResultPair fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionResultPair fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Hash transactionHash; private TransactionResult result; diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionResultSet.java b/src/main/java/org/stellar/sdk/xdr/TransactionResultSet.java index 3e237a5ff..58afcfcc1 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionResultSet.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionResultSet.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -68,6 +71,32 @@ public boolean equals(Object object) { return Arrays.equals(this.results, other.results); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionResultSet fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionResultSet fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private TransactionResultPair[] results; diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionSet.java b/src/main/java/org/stellar/sdk/xdr/TransactionSet.java index 65cad977a..81fdc7786 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionSet.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionSet.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -82,6 +85,32 @@ public boolean equals(Object object) { && Arrays.equals(this.txs, other.txs); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionSet fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionSet fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Hash previousLedgerHash; private TransactionEnvelope[] txs; diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionSetV1.java b/src/main/java/org/stellar/sdk/xdr/TransactionSetV1.java index ce0d8aac8..d90406653 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionSetV1.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionSetV1.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -82,6 +85,32 @@ public boolean equals(Object object) { && Arrays.equals(this.phases, other.phases); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionSetV1 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionSetV1 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Hash previousLedgerHash; private TransactionPhase[] phases; diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionSignaturePayload.java b/src/main/java/org/stellar/sdk/xdr/TransactionSignaturePayload.java index 9a9f09974..113063f35 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionSignaturePayload.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionSignaturePayload.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -85,6 +88,32 @@ public boolean equals(Object object) { && Objects.equal(this.taggedTransaction, other.taggedTransaction); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionSignaturePayload fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionSignaturePayload fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Hash networkId; private TransactionSignaturePayloadTaggedTransaction taggedTransaction; @@ -108,7 +137,7 @@ public TransactionSignaturePayload build() { } } - public static class TransactionSignaturePayloadTaggedTransaction { + public static class TransactionSignaturePayloadTaggedTransaction implements XdrElement { public TransactionSignaturePayloadTaggedTransaction() {} EnvelopeType type; @@ -231,5 +260,33 @@ public boolean equals(Object object) { && Objects.equal(this.feeBump, other.feeBump) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionSignaturePayloadTaggedTransaction fromXdrBase64(String xdr) + throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionSignaturePayloadTaggedTransaction fromXdrByteArray(byte[] xdr) + throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionV0.java b/src/main/java/org/stellar/sdk/xdr/TransactionV0.java index d7658cd16..06c46c0c3 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionV0.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionV0.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -172,6 +175,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionV0 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionV0 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint256 sourceAccountEd25519; private Uint32 fee; @@ -229,7 +258,7 @@ public TransactionV0 build() { } } - public static class TransactionV0Ext { + public static class TransactionV0Ext implements XdrElement { public TransactionV0Ext() {} Integer v; @@ -297,5 +326,31 @@ public boolean equals(Object object) { TransactionV0Ext other = (TransactionV0Ext) object; return Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionV0Ext fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionV0Ext fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionV0Envelope.java b/src/main/java/org/stellar/sdk/xdr/TransactionV0Envelope.java index 808f32ae0..11b519c33 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionV0Envelope.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionV0Envelope.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -84,6 +87,32 @@ public boolean equals(Object object) { return Objects.equal(this.tx, other.tx) && Arrays.equals(this.signatures, other.signatures); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionV0Envelope fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionV0Envelope fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private TransactionV0 tx; private DecoratedSignature[] signatures; diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionV1Envelope.java b/src/main/java/org/stellar/sdk/xdr/TransactionV1Envelope.java index 9a06fbda4..8d88ddd3f 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionV1Envelope.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionV1Envelope.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -84,6 +87,32 @@ public boolean equals(Object object) { return Objects.equal(this.tx, other.tx) && Arrays.equals(this.signatures, other.signatures); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TransactionV1Envelope fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TransactionV1Envelope fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Transaction tx; private DecoratedSignature[] signatures; diff --git a/src/main/java/org/stellar/sdk/xdr/TrustLineAsset.java b/src/main/java/org/stellar/sdk/xdr/TrustLineAsset.java index 1e1226026..09aab0c9e 100644 --- a/src/main/java/org/stellar/sdk/xdr/TrustLineAsset.java +++ b/src/main/java/org/stellar/sdk/xdr/TrustLineAsset.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -168,4 +171,30 @@ public boolean equals(Object object) { && Objects.equal(this.liquidityPoolID, other.liquidityPoolID) && Objects.equal(this.type, other.type); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TrustLineAsset fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TrustLineAsset fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/TrustLineEntry.java b/src/main/java/org/stellar/sdk/xdr/TrustLineEntry.java index f1c65dcc2..4cfca2ff5 100644 --- a/src/main/java/org/stellar/sdk/xdr/TrustLineEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/TrustLineEntry.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -153,6 +156,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TrustLineEntry fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TrustLineEntry fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private AccountID accountID; private TrustLineAsset asset; @@ -203,7 +232,7 @@ public TrustLineEntry build() { } } - public static class TrustLineEntryExt { + public static class TrustLineEntryExt implements XdrElement { public TrustLineEntryExt() {} Integer v; @@ -295,7 +324,33 @@ public boolean equals(Object object) { return Objects.equal(this.v1, other.v1) && Objects.equal(this.v, other.v); } - public static class TrustLineEntryV1 { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TrustLineEntryExt fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TrustLineEntryExt fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class TrustLineEntryV1 implements XdrElement { public TrustLineEntryV1() {} private Liabilities liabilities; @@ -351,6 +406,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TrustLineEntryV1 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TrustLineEntryV1 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Liabilities liabilities; private TrustLineEntryV1Ext ext; @@ -373,7 +454,7 @@ public TrustLineEntryV1 build() { } } - public static class TrustLineEntryV1Ext { + public static class TrustLineEntryV1Ext implements XdrElement { public TrustLineEntryV1Ext() {} Integer v; @@ -465,6 +546,32 @@ public boolean equals(Object object) { TrustLineEntryV1Ext other = (TrustLineEntryV1Ext) object; return Objects.equal(this.v2, other.v2) && Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TrustLineEntryV1Ext fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TrustLineEntryV1Ext fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } } diff --git a/src/main/java/org/stellar/sdk/xdr/TrustLineEntryExtensionV2.java b/src/main/java/org/stellar/sdk/xdr/TrustLineEntryExtensionV2.java index 35c475dba..35ace927c 100644 --- a/src/main/java/org/stellar/sdk/xdr/TrustLineEntryExtensionV2.java +++ b/src/main/java/org/stellar/sdk/xdr/TrustLineEntryExtensionV2.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -80,6 +83,32 @@ public boolean equals(Object object) { && Objects.equal(this.ext, other.ext); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TrustLineEntryExtensionV2 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TrustLineEntryExtensionV2 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Int32 liquidityPoolUseCount; private TrustLineEntryExtensionV2Ext ext; @@ -102,7 +131,7 @@ public TrustLineEntryExtensionV2 build() { } } - public static class TrustLineEntryExtensionV2Ext { + public static class TrustLineEntryExtensionV2Ext implements XdrElement { public TrustLineEntryExtensionV2Ext() {} Integer v; @@ -174,5 +203,31 @@ public boolean equals(Object object) { TrustLineEntryExtensionV2Ext other = (TrustLineEntryExtensionV2Ext) object; return Objects.equal(this.v, other.v); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TrustLineEntryExtensionV2Ext fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TrustLineEntryExtensionV2Ext fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } } diff --git a/src/main/java/org/stellar/sdk/xdr/TrustLineFlags.java b/src/main/java/org/stellar/sdk/xdr/TrustLineFlags.java index 3f4be20b7..4e3c5698c 100644 --- a/src/main/java/org/stellar/sdk/xdr/TrustLineFlags.java +++ b/src/main/java/org/stellar/sdk/xdr/TrustLineFlags.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -58,4 +61,30 @@ public static void encode(XdrDataOutputStream stream, TrustLineFlags value) thro public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TrustLineFlags fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TrustLineFlags fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/TxAdvertVector.java b/src/main/java/org/stellar/sdk/xdr/TxAdvertVector.java index f186d6387..342600868 100644 --- a/src/main/java/org/stellar/sdk/xdr/TxAdvertVector.java +++ b/src/main/java/org/stellar/sdk/xdr/TxAdvertVector.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -67,4 +70,30 @@ public boolean equals(Object object) { TxAdvertVector other = (TxAdvertVector) object; return Arrays.equals(this.TxAdvertVector, other.TxAdvertVector); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TxAdvertVector fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TxAdvertVector fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/TxDemandVector.java b/src/main/java/org/stellar/sdk/xdr/TxDemandVector.java index 1cc302b63..43b3a5b06 100644 --- a/src/main/java/org/stellar/sdk/xdr/TxDemandVector.java +++ b/src/main/java/org/stellar/sdk/xdr/TxDemandVector.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -67,4 +70,30 @@ public boolean equals(Object object) { TxDemandVector other = (TxDemandVector) object; return Arrays.equals(this.TxDemandVector, other.TxDemandVector); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TxDemandVector fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TxDemandVector fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/TxSetComponent.java b/src/main/java/org/stellar/sdk/xdr/TxSetComponent.java index bb01ce02c..192a9a0e5 100644 --- a/src/main/java/org/stellar/sdk/xdr/TxSetComponent.java +++ b/src/main/java/org/stellar/sdk/xdr/TxSetComponent.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -114,7 +117,33 @@ public boolean equals(Object object) { && Objects.equal(this.type, other.type); } - public static class TxSetComponentTxsMaybeDiscountedFee { + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TxSetComponent fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TxSetComponent fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + + public static class TxSetComponentTxsMaybeDiscountedFee implements XdrElement { public TxSetComponentTxsMaybeDiscountedFee() {} private Int64 baseFee; @@ -189,6 +218,33 @@ public boolean equals(Object object) { return Objects.equal(this.baseFee, other.baseFee) && Arrays.equals(this.txs, other.txs); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TxSetComponentTxsMaybeDiscountedFee fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TxSetComponentTxsMaybeDiscountedFee fromXdrByteArray(byte[] xdr) + throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Int64 baseFee; private TransactionEnvelope[] txs; diff --git a/src/main/java/org/stellar/sdk/xdr/TxSetComponentType.java b/src/main/java/org/stellar/sdk/xdr/TxSetComponentType.java index 4b9408854..9c9d2e49d 100644 --- a/src/main/java/org/stellar/sdk/xdr/TxSetComponentType.java +++ b/src/main/java/org/stellar/sdk/xdr/TxSetComponentType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -48,4 +51,30 @@ public static void encode(XdrDataOutputStream stream, TxSetComponentType value) public void encode(XdrDataOutputStream stream) throws IOException { encode(stream, this); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static TxSetComponentType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static TxSetComponentType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/UInt128Parts.java b/src/main/java/org/stellar/sdk/xdr/UInt128Parts.java index e66e95183..1b3d039f7 100644 --- a/src/main/java/org/stellar/sdk/xdr/UInt128Parts.java +++ b/src/main/java/org/stellar/sdk/xdr/UInt128Parts.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -71,6 +74,32 @@ public boolean equals(Object object) { return Objects.equal(this.hi, other.hi) && Objects.equal(this.lo, other.lo); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static UInt128Parts fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static UInt128Parts fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint64 hi; private Uint64 lo; diff --git a/src/main/java/org/stellar/sdk/xdr/UInt256Parts.java b/src/main/java/org/stellar/sdk/xdr/UInt256Parts.java index f7151f260..8f8395708 100644 --- a/src/main/java/org/stellar/sdk/xdr/UInt256Parts.java +++ b/src/main/java/org/stellar/sdk/xdr/UInt256Parts.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -100,6 +103,32 @@ public boolean equals(Object object) { && Objects.equal(this.lo_lo, other.lo_lo); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static UInt256Parts fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static UInt256Parts fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private Uint64 hi_hi; private Uint64 hi_lo; diff --git a/src/main/java/org/stellar/sdk/xdr/Uint256.java b/src/main/java/org/stellar/sdk/xdr/Uint256.java index bd7832e1a..a2ae110cc 100644 --- a/src/main/java/org/stellar/sdk/xdr/Uint256.java +++ b/src/main/java/org/stellar/sdk/xdr/Uint256.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -61,4 +64,30 @@ public boolean equals(Object object) { Uint256 other = (Uint256) object; return Arrays.equals(this.uint256, other.uint256); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Uint256 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Uint256 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Uint32.java b/src/main/java/org/stellar/sdk/xdr/Uint32.java index 8c66f883f..3ebbdd803 100644 --- a/src/main/java/org/stellar/sdk/xdr/Uint32.java +++ b/src/main/java/org/stellar/sdk/xdr/Uint32.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -58,4 +61,30 @@ public boolean equals(Object object) { Uint32 other = (Uint32) object; return Objects.equal(this.uint32, other.uint32); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Uint32 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Uint32 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Uint64.java b/src/main/java/org/stellar/sdk/xdr/Uint64.java index 819c554d6..698c44ecc 100644 --- a/src/main/java/org/stellar/sdk/xdr/Uint64.java +++ b/src/main/java/org/stellar/sdk/xdr/Uint64.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -58,4 +61,30 @@ public boolean equals(Object object) { Uint64 other = (Uint64) object; return Objects.equal(this.uint64, other.uint64); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Uint64 fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Uint64 fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/UpgradeEntryMeta.java b/src/main/java/org/stellar/sdk/xdr/UpgradeEntryMeta.java index 1eb4bbd40..d85a4b994 100644 --- a/src/main/java/org/stellar/sdk/xdr/UpgradeEntryMeta.java +++ b/src/main/java/org/stellar/sdk/xdr/UpgradeEntryMeta.java @@ -6,6 +6,9 @@ import static org.stellar.sdk.xdr.Constants.*; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; // === xdr source ============================================================ @@ -72,6 +75,32 @@ public boolean equals(Object object) { return Objects.equal(this.upgrade, other.upgrade) && Objects.equal(this.changes, other.changes); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static UpgradeEntryMeta fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static UpgradeEntryMeta fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + public static final class Builder { private LedgerUpgrade upgrade; private LedgerEntryChanges changes; diff --git a/src/main/java/org/stellar/sdk/xdr/UpgradeType.java b/src/main/java/org/stellar/sdk/xdr/UpgradeType.java index cdd8d52de..16a090c60 100644 --- a/src/main/java/org/stellar/sdk/xdr/UpgradeType.java +++ b/src/main/java/org/stellar/sdk/xdr/UpgradeType.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -63,4 +66,30 @@ public boolean equals(Object object) { UpgradeType other = (UpgradeType) object; return Arrays.equals(this.UpgradeType, other.UpgradeType); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static UpgradeType fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static UpgradeType fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/Value.java b/src/main/java/org/stellar/sdk/xdr/Value.java index c8b719389..86c1b6d04 100644 --- a/src/main/java/org/stellar/sdk/xdr/Value.java +++ b/src/main/java/org/stellar/sdk/xdr/Value.java @@ -5,6 +5,9 @@ import static org.stellar.sdk.xdr.Constants.*; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -62,4 +65,30 @@ public boolean equals(Object object) { Value other = (Value) object; return Arrays.equals(this.Value, other.Value); } + + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static Value fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static Value fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } } diff --git a/src/main/java/org/stellar/sdk/xdr/XdrElement.java b/src/main/java/org/stellar/sdk/xdr/XdrElement.java index fffc167ed..511360659 100644 --- a/src/main/java/org/stellar/sdk/xdr/XdrElement.java +++ b/src/main/java/org/stellar/sdk/xdr/XdrElement.java @@ -5,4 +5,8 @@ /** Common parent interface for all generated classes. */ interface XdrElement { void encode(XdrDataOutputStream stream) throws IOException; + + String toXdrBase64() throws IOException; + + byte[] toXdrByteArray() throws IOException; } diff --git a/src/main/java/org/stellar/sdk/xdr/XdrString.java b/src/main/java/org/stellar/sdk/xdr/XdrString.java index ab0e0ff24..df1bdea8b 100644 --- a/src/main/java/org/stellar/sdk/xdr/XdrString.java +++ b/src/main/java/org/stellar/sdk/xdr/XdrString.java @@ -1,5 +1,8 @@ package org.stellar.sdk.xdr; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InvalidClassException; import java.nio.charset.Charset; @@ -36,6 +39,40 @@ public byte[] getBytes() { return this.bytes; } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static XdrString fromXdrBase64(String xdr, int maxSize) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes, maxSize); + } + + public static XdrString fromXdrBase64(String xdr) throws IOException { + return fromXdrBase64(xdr, Integer.MAX_VALUE); + } + + public static XdrString fromXdrByteArray(byte[] xdr, int maxSize) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream, maxSize); + } + + public static XdrString fromXdrByteArray(byte[] xdr) throws IOException { + return fromXdrByteArray(xdr, Integer.MAX_VALUE); + } + @Override public int hashCode() { return Arrays.hashCode(this.bytes); diff --git a/src/main/java/org/stellar/sdk/xdr/XdrUnsignedHyperInteger.java b/src/main/java/org/stellar/sdk/xdr/XdrUnsignedHyperInteger.java index 8ef477129..ada4b6e31 100644 --- a/src/main/java/org/stellar/sdk/xdr/XdrUnsignedHyperInteger.java +++ b/src/main/java/org/stellar/sdk/xdr/XdrUnsignedHyperInteger.java @@ -1,6 +1,9 @@ package org.stellar.sdk.xdr; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.math.BigInteger; @@ -56,6 +59,32 @@ public BigInteger getNumber() { return number; } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static XdrUnsignedHyperInteger fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static XdrUnsignedHyperInteger fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + @Override public int hashCode() { return Objects.hashCode(this.number); diff --git a/src/main/java/org/stellar/sdk/xdr/XdrUnsignedInteger.java b/src/main/java/org/stellar/sdk/xdr/XdrUnsignedInteger.java index b717ccd6e..37c5c3cf9 100644 --- a/src/main/java/org/stellar/sdk/xdr/XdrUnsignedInteger.java +++ b/src/main/java/org/stellar/sdk/xdr/XdrUnsignedInteger.java @@ -1,6 +1,9 @@ package org.stellar.sdk.xdr; import com.google.common.base.Objects; +import com.google.common.io.BaseEncoding; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; /** @@ -44,6 +47,32 @@ public void encode(XdrDataOutputStream stream) throws IOException { stream.writeInt(number.intValue()); } + @Override + public String toXdrBase64() throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + return base64Encoding.encode(toXdrByteArray()); + } + + @Override + public byte[] toXdrByteArray() throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + XdrDataOutputStream xdrDataOutputStream = new XdrDataOutputStream(byteArrayOutputStream); + encode(xdrDataOutputStream); + return byteArrayOutputStream.toByteArray(); + } + + public static XdrUnsignedInteger fromXdrBase64(String xdr) throws IOException { + BaseEncoding base64Encoding = BaseEncoding.base64(); + byte[] bytes = base64Encoding.decode(xdr); + return fromXdrByteArray(bytes); + } + + public static XdrUnsignedInteger fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + return decode(xdrDataInputStream); + } + @Override public int hashCode() { return Objects.hashCode(this.number); diff --git a/src/test/java/org/stellar/sdk/SorobanServerTest.java b/src/test/java/org/stellar/sdk/SorobanServerTest.java index 7aae8ae34..57bba78ee 100644 --- a/src/test/java/org/stellar/sdk/SorobanServerTest.java +++ b/src/test/java/org/stellar/sdk/SorobanServerTest.java @@ -843,7 +843,7 @@ public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) Transaction newTx = server.prepareTransaction(transaction); SorobanTransactionData sorobanData = - Util.sorobanTransactionDataToXDR( + SorobanTransactionData.fromXdrBase64( "AAAAAAAAAAIAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAFAAAAAEAAAAAAAAAB300Hyg0HZG+Qie3zvsxLvugrNtFqd3AIntWy9bg2YvZAAAAAAAAAAEAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAEAAAAAEAAAACAAAADwAAAAdDb3VudGVyAAAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAQAAAAAAFcLDAAAF8AAAAQgAAAMcAAAAAAAAAJw="); InvokeHostFunctionOperation operation = InvokeHostFunctionOperation.builder() @@ -962,7 +962,7 @@ public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) Transaction newTx = server.prepareTransaction(transaction); SorobanTransactionData sorobanData = - Util.sorobanTransactionDataToXDR( + SorobanTransactionData.fromXdrBase64( "AAAAAAAAAAIAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAFAAAAAEAAAAAAAAAB300Hyg0HZG+Qie3zvsxLvugrNtFqd3AIntWy9bg2YvZAAAAAAAAAAEAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAEAAAAAEAAAACAAAADwAAAAdDb3VudGVyAAAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAQAAAAAAFcLDAAAF8AAAAQgAAAMcAAAAAAAAAJw="); InvokeHostFunctionOperation operation = InvokeHostFunctionOperation.builder() @@ -1091,7 +1091,7 @@ public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) Transaction newTx = server.prepareTransaction(transaction); SorobanTransactionData sorobanData = - Util.sorobanTransactionDataToXDR( + SorobanTransactionData.fromXdrBase64( "AAAAAAAAAAIAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAFAAAAAEAAAAAAAAAB300Hyg0HZG+Qie3zvsxLvugrNtFqd3AIntWy9bg2YvZAAAAAAAAAAEAAAAGAAAAAcWLK/vE8FTnMk9r8gytPgJuQbutGm0gw9fUkY3tFlQRAAAAEAAAAAEAAAACAAAADwAAAAdDb3VudGVyAAAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAQAAAAAAFcLDAAAF8AAAAQgAAAMcAAAAAAAAAJw="); InvokeHostFunctionOperation operation = InvokeHostFunctionOperation.builder() diff --git a/src/test/java/org/stellar/sdk/TransactionBuilderTest.java b/src/test/java/org/stellar/sdk/TransactionBuilderTest.java index 2e6ca7f84..8e525e676 100644 --- a/src/test/java/org/stellar/sdk/TransactionBuilderTest.java +++ b/src/test/java/org/stellar/sdk/TransactionBuilderTest.java @@ -1068,7 +1068,7 @@ public void voidBuilderSorobanDataXdrString() { } @Test - public void voidBuilderSorobanDataXdrObject() { + public void voidBuilderSorobanDataXdrObject() throws IOException { KeyPair source = KeyPair.fromSecretSeed("SCH27VUZZ6UAKB67BDNF6FA42YMBMQCBKXWGMFD5TZ6S5ZZCZFLRXKHS"); KeyPair destination = @@ -1102,7 +1102,7 @@ public void voidBuilderSorobanDataXdrObject() { .refundableFee(new Int64(100L)) .ext(new ExtensionPoint.Builder().discriminant(0).build()) .build(); - String sorobanDataString = Util.xdrToSorobanTransactionData(sorobanData); + String sorobanDataString = sorobanData.toXdrBase64(); CreateContractArgs createContractArgs = new CreateContractArgs.Builder() diff --git a/src/test/java/org/stellar/sdk/UtilTest.java b/src/test/java/org/stellar/sdk/UtilTest.java deleted file mode 100644 index b362c2e63..000000000 --- a/src/test/java/org/stellar/sdk/UtilTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.stellar.sdk; - -import static org.junit.Assert.assertEquals; -import static org.stellar.sdk.Util.xdrToSorobanTransactionData; - -import org.junit.Test; -import org.stellar.sdk.xdr.*; - -public class UtilTest { - @Test - public void testXdrToSorobanTransactionData() { - LedgerKey ledgerKey = - new LedgerKey.Builder() - .discriminant(LedgerEntryType.ACCOUNT) - .account( - new LedgerKey.LedgerKeyAccount.Builder() - .accountID( - KeyPair.fromAccountId( - "GB7TAYRUZGE6TVT7NHP5SMIZRNQA6PLM423EYISAOAP3MKYIQMVYP2JO") - .getXdrAccountId()) - .build()) - .build(); - SorobanTransactionData sorobanData = - new SorobanTransactionData.Builder() - .resources( - new SorobanResources.Builder() - .footprint( - new LedgerFootprint.Builder() - .readOnly(new LedgerKey[] {ledgerKey}) - .readWrite(new LedgerKey[] {}) - .build()) - .extendedMetaDataSizeBytes(new Uint32(new XdrUnsignedInteger(216))) - .readBytes(new Uint32(new XdrUnsignedInteger(699))) - .writeBytes(new Uint32(new XdrUnsignedInteger(0))) - .instructions(new Uint32(new XdrUnsignedInteger(34567))) - .build()) - .refundableFee(new Int64(100L)) - .ext(new ExtensionPoint.Builder().discriminant(0).build()) - .build(); - String data = xdrToSorobanTransactionData(sorobanData); - String expected = - "AAAAAAAAAAEAAAAAAAAAAH8wYjTJienWf2nf2TEZi2APPWzmtkwiQHAftisIgyuHAAAAAAAAhwcAAAK7AAAAAAAAANgAAAAAAAAAZA=="; - assertEquals(expected, data); - } -} diff --git a/xdr/Stellar-transaction.x b/xdr/Stellar-transaction.x index 40768fea9..ca6308f5e 100644 --- a/xdr/Stellar-transaction.x +++ b/xdr/Stellar-transaction.x @@ -817,7 +817,7 @@ struct SorobanResources uint32 writeBytes; // Maximum size of dynamic metadata produced by this contract ( - // bytes read from ledger + bytes written to ledger + event bytes written to meta). + // currently only includes the events). uint32 extendedMetaDataSizeBytes; }; @@ -1793,8 +1793,7 @@ enum InvokeHostFunctionResultCode // codes considered as "failure" for the operation INVOKE_HOST_FUNCTION_MALFORMED = -1, INVOKE_HOST_FUNCTION_TRAPPED = -2, - INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED = -3, - INVOKE_HOST_FUNCTION_ENTRY_EXPIRED = -4 + INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED = -3 }; union InvokeHostFunctionResult switch (InvokeHostFunctionResultCode code) @@ -1804,7 +1803,6 @@ case INVOKE_HOST_FUNCTION_SUCCESS: case INVOKE_HOST_FUNCTION_MALFORMED: case INVOKE_HOST_FUNCTION_TRAPPED: case INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED: -case INVOKE_HOST_FUNCTION_ENTRY_EXPIRED: void; }; From 9c785662d500007967cf7fc68f9de9b2608e421f Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Fri, 11 Aug 2023 10:27:55 +0800 Subject: [PATCH 08/29] Optimize the way of generating XDR classes. (#506) --- Makefile | 37 +++++++++++++++++++++++++++++++++++++ readme.md | 6 +++--- 2 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..bfe65e281 --- /dev/null +++ b/Makefile @@ -0,0 +1,37 @@ +XDRS = xdr/Stellar-SCP.x \ +xdr/Stellar-ledger-entries.x \ +xdr/Stellar-ledger.x \ +xdr/Stellar-overlay.x \ +xdr/Stellar-transaction.x \ +xdr/Stellar-types.x \ +xdr/Stellar-contract-env-meta.x \ +xdr/Stellar-contract-meta.x \ +xdr/Stellar-contract-spec.x \ +xdr/Stellar-contract.x \ +xdr/Stellar-internal.x \ +xdr/Stellar-contract-config-setting.x + +XDRGEN_COMMIT=472eac8c5609d310d48bd8eed68aa24d2626df53 +XDRNEXT_COMMIT=e372df9f677961aac04c5a4cc80a3667f310b29f + +.PHONY: xdr xdr-clean xdr-update + +xdr-generate: $(XDRS) + docker run -it --rm -v $$PWD:/wd -w /wd ruby /bin/bash -c '\ + gem install specific_install -v 0.3.8 && \ + gem specific_install https://github.com/stellar/xdrgen.git -b $(XDRGEN_COMMIT) && \ + xdrgen \ + --language java \ + --namespace org.stellar.sdk.xdr \ + --output src/main/java/org/stellar/sdk/xdr/ \ + $(XDRS)' + ./gradlew :spotlessApply + +xdr/%.x: + curl -Lsf -o $@ https://raw.githubusercontent.com/stellar/stellar-xdr/$(XDRNEXT_COMMIT)/$(@F) + +xdr-clean: + rm xdr/*.x || true + rm src/main/java/org/stellar/sdk/xdr/*.java || true + +xdr-update: xdr-clean xdr-generate \ No newline at end of file diff --git a/readme.md b/readme.md index 5d44136cd..79be07361 100644 --- a/readme.md +++ b/readme.md @@ -40,7 +40,7 @@ For information on how to contribute, please refer to our [contribution guide](h java-stellar-sdk is licensed under an Apache-2.0 license. See the [LICENSE](https://github.com/stellar/java-stellar-sdk/blob/master/LICENSE) file for details. ## xdr to jave code generation -All the java source files in org.stellar.sdk.xdr package are generated using the `xdrgen` command from the [stellar/xdrgen](https://github.com/stellar/xdrgen) -``` -xdrgen -o ./src/main/java/org/stellar/sdk/xdr -l java -n org.stellar.sdk.xdr ./xdr/*.x +All the java source files in `org.stellar.sdk.xdr` package are generated using the following command: +```bash +make xdr-update ``` \ No newline at end of file From c9b9f99677f8a9be185453a949c39893f4110247 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Mon, 14 Aug 2023 16:50:00 +0800 Subject: [PATCH 09/29] Add abstractions for converting between SCVal and native types. (#500) --- src/main/java/org/stellar/sdk/Address.java | 30 +- .../sdk/InvokeHostFunctionOperation.java | 4 +- src/main/java/org/stellar/sdk/Util.java | 19 + src/main/java/org/stellar/sdk/scval/Scv.java | 478 ++++++++++++++++++ .../org/stellar/sdk/scval/ScvAddress.java | 24 + .../org/stellar/sdk/scval/ScvBoolean.java | 23 + .../java/org/stellar/sdk/scval/ScvBytes.java | 24 + .../sdk/scval/ScvContractInstance.java | 24 + .../org/stellar/sdk/scval/ScvDuration.java | 36 ++ .../java/org/stellar/sdk/scval/ScvError.java | 27 + .../java/org/stellar/sdk/scval/ScvInt128.java | 70 +++ .../java/org/stellar/sdk/scval/ScvInt256.java | 83 +++ .../java/org/stellar/sdk/scval/ScvInt32.java | 24 + .../java/org/stellar/sdk/scval/ScvInt64.java | 23 + .../scval/ScvLedgerKeyContractInstance.java | 21 + .../stellar/sdk/scval/ScvLedgerKeyNonce.java | 27 + .../java/org/stellar/sdk/scval/ScvMap.java | 39 ++ .../java/org/stellar/sdk/scval/ScvString.java | 25 + .../java/org/stellar/sdk/scval/ScvSymbol.java | 24 + .../org/stellar/sdk/scval/ScvTimePoint.java | 39 ++ .../org/stellar/sdk/scval/ScvUint128.java | 66 +++ .../org/stellar/sdk/scval/ScvUint256.java | 78 +++ .../java/org/stellar/sdk/scval/ScvUint32.java | 38 ++ .../java/org/stellar/sdk/scval/ScvUint64.java | 38 ++ .../java/org/stellar/sdk/scval/ScvVec.java | 30 ++ .../java/org/stellar/sdk/scval/ScvVoid.java | 21 + .../org/stellar/sdk/scval/package-info.java | 5 + .../java/org/stellar/sdk/AddressTest.java | 14 +- .../sdk/InvokeHostFunctionOperationTest.java | 8 +- .../org/stellar/sdk/scval/ScvAddressTest.java | 42 ++ .../org/stellar/sdk/scval/ScvBooleanTest.java | 18 + .../org/stellar/sdk/scval/ScvBytesTest.java | 22 + .../sdk/scval/ScvContractInstanceTest.java | 30 ++ .../stellar/sdk/scval/ScvDurationTest.java | 55 ++ .../org/stellar/sdk/scval/ScvErrorTest.java | 29 ++ .../org/stellar/sdk/scval/ScvInt128Test.java | 124 +++++ .../org/stellar/sdk/scval/ScvInt256Test.java | 307 +++++++++++ .../org/stellar/sdk/scval/ScvInt32Test.java | 22 + .../org/stellar/sdk/scval/ScvInt64Test.java | 22 + .../ScvLedgerKeyContractInstanceTest.java | 19 + .../sdk/scval/ScvLedgerKeyNonceTest.java | 25 + .../org/stellar/sdk/scval/ScvMapTest.java | 40 ++ .../org/stellar/sdk/scval/ScvStringTest.java | 42 ++ .../org/stellar/sdk/scval/ScvSymbolTest.java | 26 + .../stellar/sdk/scval/ScvTimePointTest.java | 55 ++ .../org/stellar/sdk/scval/ScvUint128Test.java | 80 +++ .../org/stellar/sdk/scval/ScvUint256Test.java | 115 +++++ .../org/stellar/sdk/scval/ScvUint32Test.java | 53 ++ .../org/stellar/sdk/scval/ScvUint64Test.java | 52 ++ .../org/stellar/sdk/scval/ScvVecTest.java | 30 ++ .../org/stellar/sdk/scval/ScvVoidTest.java | 18 + 51 files changed, 2553 insertions(+), 35 deletions(-) create mode 100644 src/main/java/org/stellar/sdk/scval/Scv.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvAddress.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvBoolean.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvBytes.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvContractInstance.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvDuration.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvError.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvInt128.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvInt256.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvInt32.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvInt64.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvLedgerKeyContractInstance.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvLedgerKeyNonce.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvMap.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvString.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvSymbol.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvTimePoint.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvUint128.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvUint256.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvUint32.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvUint64.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvVec.java create mode 100644 src/main/java/org/stellar/sdk/scval/ScvVoid.java create mode 100644 src/main/java/org/stellar/sdk/scval/package-info.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvAddressTest.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvBooleanTest.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvBytesTest.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvContractInstanceTest.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvDurationTest.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvErrorTest.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvInt128Test.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvInt256Test.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvInt32Test.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvInt64Test.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvLedgerKeyContractInstanceTest.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvLedgerKeyNonceTest.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvMapTest.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvStringTest.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvSymbolTest.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvTimePointTest.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvUint128Test.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvUint256Test.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvUint32Test.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvUint64Test.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvVecTest.java create mode 100644 src/test/java/org/stellar/sdk/scval/ScvVoidTest.java diff --git a/src/main/java/org/stellar/sdk/Address.java b/src/main/java/org/stellar/sdk/Address.java index 385ea9242..e28f89a02 100644 --- a/src/main/java/org/stellar/sdk/Address.java +++ b/src/main/java/org/stellar/sdk/Address.java @@ -1,6 +1,6 @@ package org.stellar.sdk; -import com.google.common.base.Objects; +import lombok.EqualsAndHashCode; import org.stellar.sdk.xdr.Hash; import org.stellar.sdk.xdr.SCAddress; import org.stellar.sdk.xdr.SCVal; @@ -10,8 +10,9 @@ * Represents a single address in the Stellar network. An address can represent an account or a * contract. */ +@EqualsAndHashCode public class Address { - + private static final SCValType TYPE = SCValType.SCV_ADDRESS; private final byte[] key; private final AddressType type; @@ -77,8 +78,10 @@ public static Address fromSCAddress(SCAddress scAddress) { * @return a new {@link Address} object from the given XDR object */ public static Address fromSCVal(SCVal scVal) { - if (!SCValType.SCV_ADDRESS.equals(scVal.getDiscriminant())) { - throw new IllegalArgumentException("SCVal is not of type SCV_ADDRESS"); + if (!TYPE.equals(scVal.getDiscriminant())) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); } return Address.fromSCAddress(scVal.getAddress()); } @@ -112,7 +115,7 @@ public SCAddress toSCAddress() { */ public SCVal toSCVal() { SCVal scVal = new SCVal(); - scVal.setDiscriminant(SCValType.SCV_ADDRESS); + scVal.setDiscriminant(TYPE); scVal.setAddress(this.toSCAddress()); return scVal; } @@ -131,25 +134,10 @@ public byte[] getBytes() { * * @return the type of this address. */ - public AddressType getType() { + public AddressType getAddressType() { return type; } - @Override - public int hashCode() { - return Objects.hashCode(this.key, this.type); - } - - @Override - public boolean equals(Object object) { - if (!(object instanceof Address)) { - return false; - } - - Address other = (Address) object; - return Objects.equal(this.key, other.key) && Objects.equal(this.type, other.type); - } - @Override public String toString() { switch (this.type) { diff --git a/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java b/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java index e0fa39eab..56fe04b74 100644 --- a/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java +++ b/src/main/java/org/stellar/sdk/InvokeHostFunctionOperation.java @@ -36,6 +36,7 @@ * * @see List of Operations + * @see org.stellar.sdk.scval.Scv */ @EqualsAndHashCode(callSuper = true) @SuperBuilder(toBuilder = true) @@ -225,6 +226,7 @@ public static InvokeHostFunctionOperation fromXdr(InvokeHostFunctionOp op) { * parameter preset, so that you can conveniently build an {@link InvokeHostFunctionOperation} to * invoke a contract function. * + * @see org.stellar.sdk.scval.Scv * @see Interacting with Contracts @@ -236,7 +238,7 @@ public static InvokeHostFunctionOperation fromXdr(InvokeHostFunctionOp op) { public static InvokeHostFunctionOperationBuilder invokeContractFunctionOperationBuilder( String contractId, String functionName, @Nullable Collection parameters) { Address address = new Address(contractId); - if (address.getType() != Address.AddressType.CONTRACT) { + if (address.getAddressType() != Address.AddressType.CONTRACT) { throw new IllegalArgumentException("\"contractId\" must be a contract address"); } SCVal contractIdScVal = address.toSCVal(); diff --git a/src/main/java/org/stellar/sdk/Util.java b/src/main/java/org/stellar/sdk/Util.java index dd76e6f93..4f9b91e5d 100644 --- a/src/main/java/org/stellar/sdk/Util.java +++ b/src/main/java/org/stellar/sdk/Util.java @@ -1,5 +1,6 @@ package org.stellar.sdk; +import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; @@ -99,4 +100,22 @@ public static AssetTypeCreditAlphaNum assertNonNativeAsset(Asset asset) { } throw new IllegalArgumentException("native assets are not supported"); } + + /** + * Returns an 8 byte array representation of a BigInteger value. + * + * @param value BigInteger value to convert to byte array + * @return byte array + */ + public static byte[] getBytes(BigInteger value) { + byte[] bytes = value.toByteArray(); + if (bytes.length < 8) { + byte[] temp = new byte[8]; + System.arraycopy(bytes, 0, temp, 8 - bytes.length, bytes.length); + bytes = temp; + } else if (bytes.length > 8) { + bytes = Arrays.copyOfRange(bytes, bytes.length - 8, bytes.length); + } + return bytes; + } } diff --git a/src/main/java/org/stellar/sdk/scval/Scv.java b/src/main/java/org/stellar/sdk/scval/Scv.java new file mode 100644 index 000000000..688b8be53 --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/Scv.java @@ -0,0 +1,478 @@ +package org.stellar.sdk.scval; + +import java.math.BigInteger; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.Map; +import lombok.NoArgsConstructor; +import org.stellar.sdk.Address; +import org.stellar.sdk.xdr.SCContractInstance; +import org.stellar.sdk.xdr.SCError; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +/** Provides a range of methods to help you build and parse {@link SCVal} more conveniently. */ +@NoArgsConstructor(access = lombok.AccessLevel.PRIVATE) +public class Scv { + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_ADDRESS}. + * + * @param address address to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_ADDRESS} + */ + public static SCVal toAddress(String address) { + return ScvAddress.toSCVal(new Address(address)); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_ADDRESS}. + * + * @param address address to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_ADDRESS} + */ + public static SCVal toAddress(Address address) { + return ScvAddress.toSCVal(address); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_ADDRESS} to {@link Address}. + * + * @param scVal {@link SCVal} to convert + * @return the address + */ + public static Address fromAddress(SCVal scVal) { + return ScvAddress.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_BOOL}. + * + * @param bool boolean to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_BOOL} + */ + public static SCVal toBoolean(boolean bool) { + return ScvBoolean.toSCVal(bool); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_BOOL} to boolean. + * + * @param scVal {@link SCVal} to convert + * @return boolean + */ + public static boolean fromBoolean(SCVal scVal) { + return ScvBoolean.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_BYTES}. + * + * @param bytes bytes to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_BYTES} + */ + public static SCVal toBytes(byte[] bytes) { + return ScvBytes.toSCVal(bytes); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_BYTES} to byte[]. + * + * @param scVal {@link SCVal} to convert + * @return the bytes + */ + public static byte[] fromBytes(SCVal scVal) { + return ScvBytes.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_CONTRACT_INSTANCE}. + * + * @param instance {@link SCContractInstance} to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_CONTRACT_INSTANCE} + */ + public static SCVal toContractInstance(SCContractInstance instance) { + return ScvContractInstance.toSCVal(instance); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_CONTRACT_INSTANCE} to {@link + * SCContractInstance}. + * + * @param scVal {@link SCVal} to convert + * @return the contract instance + */ + public static SCContractInstance fromContractInstance(SCVal scVal) { + return ScvContractInstance.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_DURATION}. + * + * @param duration duration to convert (uint64) + * @return {@link SCVal} with the type of {@link SCValType#SCV_DURATION} + */ + public static SCVal toDuration(BigInteger duration) { + return ScvDuration.toSCVal(duration); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_DURATION} to {@link + * BigInteger}. + * + * @param scVal {@link SCVal} to convert + * @return the duration (uint64) + */ + public static BigInteger fromDuration(SCVal scVal) { + return ScvDuration.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_ERROR}. + * + * @param error {@link SCError} to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_ERROR} + */ + public static SCVal toError(SCError error) { + return ScvError.toSCVal(error); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_ERROR} to {@link SCError}. + * + * @param scVal {@link SCVal} to convert + * @return the error + */ + public static SCError fromError(SCVal scVal) { + return ScvError.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_I128}. + * + * @param int32 int32 to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_I128} + */ + public static SCVal toInt32(int int32) { + return ScvInt32.toSCVal(int32); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_I128} to int32. + * + * @param scVal {@link SCVal} to convert + * @return the int32 + */ + public static int fromInt32(SCVal scVal) { + return ScvInt32.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_I64}. + * + * @param int64 int64 to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_I64} + */ + public static SCVal toInt64(long int64) { + return ScvInt64.toSCVal(int64); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_I64} to int64. + * + * @param scVal {@link SCVal} to convert + * @return the int64 + */ + public static long fromInt64(SCVal scVal) { + return ScvInt64.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_I128}. + * + * @param int128 int128 to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_I128} + */ + public static SCVal toInt128(BigInteger int128) { + return ScvInt128.toSCVal(int128); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_I128} to int128. + * + * @param scVal {@link SCVal} to convert + * @return the int128 + */ + public static BigInteger fromInt128(SCVal scVal) { + return ScvInt128.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_I256}. + * + * @param int256 int256 to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_I256} + */ + public static SCVal toInt256(BigInteger int256) { + return ScvInt256.toSCVal(int256); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_I256} to int256. + * + * @param scVal {@link SCVal} to convert + * @return the int256 + */ + public static BigInteger fromInt256(SCVal scVal) { + return ScvInt256.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_LEDGER_KEY_NONCE}. + * + * @return {@link SCVal} with the type of {@link SCValType#SCV_LEDGER_KEY_NONCE} + */ + public static SCVal toLedgerKeyContractInstance() { + return ScvLedgerKeyContractInstance.toSCVal(); + } + + /** + * Parse from {@link SCVal} with the type of {@link SCValType#SCV_LEDGER_KEY_CONTRACT_INSTANCE}, + * this function returns void if conversion succeeds. + * + * @param scVal {@link SCVal} to convert + */ + public static void fromLedgerKeyContractInstance(SCVal scVal) { + ScvLedgerKeyContractInstance.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_LEDGER_KEY_NONCE}. + * + * @param nonce nonce to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_LEDGER_KEY_NONCE} + */ + public static SCVal toLedgerKeyNonce(long nonce) { + return ScvLedgerKeyNonce.toSCVal(nonce); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_LEDGER_KEY_NONCE} to long. + * + * @param scVal {@link SCVal} to convert + * @return the nonce + */ + public static long fromLedgerKeyNonce(SCVal scVal) { + return ScvLedgerKeyNonce.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_MAP}. + * + * @param map map to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_MAP} + */ + public static SCVal toMap(LinkedHashMap map) { + return ScvMap.toSCVal(map); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_MAP} to {@link Map}. + * + * @param scVal {@link SCVal} to convert + * @return the map + */ + public static LinkedHashMap fromMap(SCVal scVal) { + return ScvMap.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_STRING}. + * + * @param string string to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_STRING} + */ + public static SCVal toString(String string) { + return ScvString.toSCVal(string.getBytes()); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_STRING}. + * + * @param string string to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_STRING} + */ + public static SCVal toString(byte[] string) { + return ScvString.toSCVal(string); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_STRING} to String. + * + * @param scVal {@link SCVal} to convert + * @return the string value in bytes + */ + public static byte[] fromString(SCVal scVal) { + return ScvString.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_SYMBOL}. + * + * @param symbol symbol to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_SYMBOL} + */ + public static SCVal toSymbol(String symbol) { + return ScvSymbol.toSCVal(symbol); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_SYMBOL} to String. + * + * @param scVal {@link SCVal} to convert + * @return the symbol + */ + public static String fromSymbol(SCVal scVal) { + return ScvSymbol.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_TIMEPOINT}. + * + * @param timePoint timePoint to convert (uint64) + * @return {@link SCVal} with the type of {@link SCValType#SCV_TIMEPOINT} + */ + public static SCVal toTimePoint(BigInteger timePoint) { + return ScvTimePoint.toSCVal(timePoint); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_TIMEPOINT} to {@link + * BigInteger}. + * + * @param scVal {@link SCVal} to convert + * @return the timePoint (uint64) + */ + public static BigInteger fromTimePoint(SCVal scVal) { + return ScvTimePoint.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_U32}. + * + * @param uint32 uint32 to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_U32} + */ + public static SCVal toUint32(long uint32) { + return ScvUint32.toSCVal(uint32); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_U32} to int. + * + * @param scVal {@link SCVal} to convert + * @return the uint32 + */ + public static long fromUint32(SCVal scVal) { + return ScvUint32.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_U64}. + * + * @param uint64 uint64 to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_U64} + */ + public static SCVal toUint64(BigInteger uint64) { + return ScvUint64.toSCVal(uint64); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_U64} to {@link BigInteger}. + * + * @param scVal {@link SCVal} to convert + * @return the uint64 + */ + public static BigInteger fromUint64(SCVal scVal) { + return ScvUint64.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_U128}. + * + * @param uint128 uint128 to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_U128} + */ + public static SCVal toUint128(BigInteger uint128) { + return ScvUint128.toSCVal(uint128); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_U128} to {@link BigInteger}. + * + * @param scVal {@link SCVal} to convert + * @return the uint128 + */ + public static BigInteger fromUint128(SCVal scVal) { + return ScvUint128.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_U256}. + * + * @param uint256 uint256 to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_U256} + */ + public static SCVal toUint256(BigInteger uint256) { + return ScvUint256.toSCVal(uint256); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_U256} to {@link BigInteger}. + * + * @param scVal {@link SCVal} to convert + * @return the uint256 + */ + public static BigInteger fromUint256(SCVal scVal) { + return ScvUint256.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_VEC}. + * + * @param vec vec to convert + * @return {@link SCVal} with the type of {@link SCValType#SCV_VEC} + */ + public static SCVal toVec(Collection vec) { + return ScvVec.toSCVal(vec); + } + + /** + * Convert from {@link SCVal} with the type of {@link SCValType#SCV_VEC} to {@link Collection}. + * + * @param scVal {@link SCVal} to convert + * @return the vec + */ + public static Collection fromVec(SCVal scVal) { + return ScvVec.fromSCVal(scVal); + } + + /** + * Build a {@link SCVal} with the type of {@link SCValType#SCV_VOID}. + * + * @return {@link SCVal} with the type of {@link SCValType#SCV_VOID} + */ + public static SCVal toVoid() { + return ScvVoid.toSCVal(); + } + + /** + * Parse from {@link SCVal} with the type of {@link SCValType#SCV_VOID}, this function returns + * void if conversion succeeds. + * + * @param scVal {@link SCVal} to convert + */ + public static void fromVoid(SCVal scVal) { + ScvVoid.fromSCVal(scVal); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvAddress.java b/src/main/java/org/stellar/sdk/scval/ScvAddress.java new file mode 100644 index 000000000..933f5cc1b --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvAddress.java @@ -0,0 +1,24 @@ +package org.stellar.sdk.scval; + +import org.stellar.sdk.Address; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_ADDRESS}. */ +class ScvAddress { + private static final SCValType TYPE = SCValType.SCV_ADDRESS; + + static SCVal toSCVal(Address value) { + return value.toSCVal(); + } + + static Address fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + return Address.fromSCVal(scVal); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvBoolean.java b/src/main/java/org/stellar/sdk/scval/ScvBoolean.java new file mode 100644 index 000000000..a54067da2 --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvBoolean.java @@ -0,0 +1,23 @@ +package org.stellar.sdk.scval; + +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_BOOL}. */ +class ScvBoolean { + private static final SCValType TYPE = SCValType.SCV_BOOL; + + static SCVal toSCVal(Boolean value) { + return new SCVal.Builder().discriminant(TYPE).b(value).build(); + } + + static boolean fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + return scVal.getB(); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvBytes.java b/src/main/java/org/stellar/sdk/scval/ScvBytes.java new file mode 100644 index 000000000..7a6c1c29f --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvBytes.java @@ -0,0 +1,24 @@ +package org.stellar.sdk.scval; + +import org.stellar.sdk.xdr.SCBytes; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_BYTES}. */ +class ScvBytes { + private static final SCValType TYPE = SCValType.SCV_BYTES; + + static SCVal toSCVal(byte[] value) { + return new SCVal.Builder().discriminant(TYPE).bytes(new SCBytes(value)).build(); + } + + static byte[] fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + return scVal.getBytes().getSCBytes(); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvContractInstance.java b/src/main/java/org/stellar/sdk/scval/ScvContractInstance.java new file mode 100644 index 000000000..019837b7b --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvContractInstance.java @@ -0,0 +1,24 @@ +package org.stellar.sdk.scval; + +import org.stellar.sdk.xdr.SCContractInstance; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_CONTRACT_INSTANCE}. */ +class ScvContractInstance { + private static final SCValType TYPE = SCValType.SCV_CONTRACT_INSTANCE; + + static SCVal toSCVal(SCContractInstance value) { + return new SCVal.Builder().discriminant(TYPE).instance(value).build(); + } + + static SCContractInstance fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + return scVal.getInstance(); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvDuration.java b/src/main/java/org/stellar/sdk/scval/ScvDuration.java new file mode 100644 index 000000000..e9e55f26c --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvDuration.java @@ -0,0 +1,36 @@ +package org.stellar.sdk.scval; + +import java.math.BigInteger; +import org.stellar.sdk.xdr.Duration; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_DURATION}. */ +class ScvDuration { + private static final SCValType TYPE = SCValType.SCV_DURATION; + private static final BigInteger MAX_VALUE = XdrUnsignedHyperInteger.MAX_VALUE; + private static final BigInteger MIN_VALUE = XdrUnsignedHyperInteger.MIN_VALUE; + + static SCVal toSCVal(BigInteger value) { + if (value.compareTo(MIN_VALUE) < 0 || value.compareTo(MAX_VALUE) > 0) { + throw new IllegalArgumentException("Invalid Duration value, must be between 0 and 2^64-1"); + } + + return new SCVal.Builder() + .discriminant(TYPE) + .duration(new Duration(new Uint64(new XdrUnsignedHyperInteger(value)))) + .build(); + } + + static BigInteger fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + return scVal.getDuration().getDuration().getUint64().getNumber(); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvError.java b/src/main/java/org/stellar/sdk/scval/ScvError.java new file mode 100644 index 000000000..88ebd2af1 --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvError.java @@ -0,0 +1,27 @@ +package org.stellar.sdk.scval; + +import org.stellar.sdk.xdr.SCError; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_ERROR}. */ +class ScvError { + private static final SCValType TYPE = SCValType.SCV_ERROR; + + static SCVal toSCVal(SCError value) { + return new SCVal.Builder() + .discriminant(TYPE) + .error(new SCError.Builder().code(value.getCode()).type(value.getType()).build()) + .build(); + } + + static SCError fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + return scVal.getError(); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvInt128.java b/src/main/java/org/stellar/sdk/scval/ScvInt128.java new file mode 100644 index 000000000..8fed7cec2 --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvInt128.java @@ -0,0 +1,70 @@ +package org.stellar.sdk.scval; + +import static org.stellar.sdk.Util.getBytes; + +import com.google.common.primitives.Longs; +import java.math.BigInteger; +import java.util.Arrays; +import org.stellar.sdk.xdr.Int128Parts; +import org.stellar.sdk.xdr.Int64; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_I128}. */ +class ScvInt128 { + private static final SCValType TYPE = SCValType.SCV_I128; + + private static final BigInteger MIN_VALUE = BigInteger.valueOf(-2).pow(127); + private static final BigInteger MAX_VALUE = + BigInteger.valueOf(2).pow(127).subtract(BigInteger.ONE); + + static SCVal toSCVal(BigInteger value) { + if (value.compareTo(MIN_VALUE) < 0 || value.compareTo(MAX_VALUE) > 0) { + throw new IllegalArgumentException( + String.format( + "invalid value, expected between %s and %s, but got %s", + MIN_VALUE, MAX_VALUE, value)); + } + + byte[] bytes = value.toByteArray(); + byte[] paddedBytes = new byte[16]; + if (value.signum() >= 0) { + int numBytesToCopy = Math.min(bytes.length, 16); + int copyStartIndex = bytes.length - numBytesToCopy; + System.arraycopy(bytes, copyStartIndex, paddedBytes, 16 - numBytesToCopy, numBytesToCopy); + } else { + Arrays.fill(paddedBytes, 0, 16 - bytes.length, (byte) 0xFF); + System.arraycopy(bytes, 0, paddedBytes, 16 - bytes.length, bytes.length); + } + + Int128Parts int128Parts = + new Int128Parts.Builder() + .hi(new Int64(Longs.fromByteArray(Arrays.copyOfRange(paddedBytes, 0, 8)))) + .lo( + new Uint64( + new XdrUnsignedHyperInteger( + new BigInteger(1, Arrays.copyOfRange(paddedBytes, 8, 16))))) + .build(); + return new SCVal.Builder().discriminant(TYPE).i128(int128Parts).build(); + } + + static BigInteger fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + Int128Parts int128Parts = scVal.getI128(); + byte[] hiBytes = Longs.toByteArray(int128Parts.getHi().getInt64()); + byte[] loBytes = getBytes(int128Parts.getLo().getUint64().getNumber()); + + byte[] fullBytes = new byte[16]; + System.arraycopy(hiBytes, 0, fullBytes, 0, 8); + System.arraycopy(loBytes, 0, fullBytes, 8, 8); + + return new BigInteger(fullBytes); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvInt256.java b/src/main/java/org/stellar/sdk/scval/ScvInt256.java new file mode 100644 index 000000000..8a9540f3f --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvInt256.java @@ -0,0 +1,83 @@ +package org.stellar.sdk.scval; + +import static org.stellar.sdk.Util.getBytes; + +import com.google.common.primitives.Longs; +import java.math.BigInteger; +import java.util.Arrays; +import org.stellar.sdk.xdr.Int256Parts; +import org.stellar.sdk.xdr.Int64; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_I256}. */ +class ScvInt256 { + private static final SCValType TYPE = SCValType.SCV_I256; + + private static final BigInteger MIN_VALUE = BigInteger.valueOf(-2).pow(255); + private static final BigInteger MAX_VALUE = + BigInteger.valueOf(2).pow(255).subtract(BigInteger.ONE); + + static SCVal toSCVal(BigInteger value) { + if (value.compareTo(MIN_VALUE) < 0 || value.compareTo(MAX_VALUE) > 0) { + throw new IllegalArgumentException( + String.format( + "invalid value, expected between %s and %s, but got %s", + MIN_VALUE, MAX_VALUE, value)); + } + + byte[] bytes = value.toByteArray(); + byte[] paddedBytes = new byte[32]; + + if (value.signum() >= 0) { + int numBytesToCopy = Math.min(bytes.length, 32); + int copyStartIndex = bytes.length - numBytesToCopy; + System.arraycopy(bytes, copyStartIndex, paddedBytes, 32 - numBytesToCopy, numBytesToCopy); + } else { + Arrays.fill(paddedBytes, 0, 32 - bytes.length, (byte) 0xFF); + System.arraycopy(bytes, 0, paddedBytes, 32 - bytes.length, bytes.length); + } + + Int256Parts int256Parts = + new Int256Parts.Builder() + .hi_hi(new Int64(Longs.fromByteArray(Arrays.copyOfRange(paddedBytes, 0, 8)))) + .hi_lo( + new Uint64( + new XdrUnsignedHyperInteger( + new BigInteger(1, Arrays.copyOfRange(paddedBytes, 8, 16))))) + .lo_hi( + new Uint64( + new XdrUnsignedHyperInteger( + new BigInteger(1, Arrays.copyOfRange(paddedBytes, 16, 24))))) + .lo_lo( + new Uint64( + new XdrUnsignedHyperInteger( + new BigInteger(1, Arrays.copyOfRange(paddedBytes, 24, 32))))) + .build(); + return new SCVal.Builder().discriminant(TYPE).i256(int256Parts).build(); + } + + static BigInteger fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + Int256Parts int256Parts = scVal.getI256(); + byte[] hiHiBytes = Longs.toByteArray(int256Parts.getHi_hi().getInt64()); + byte[] hiLoBytes = getBytes(int256Parts.getHi_lo().getUint64().getNumber()); + byte[] loHiBytes = getBytes(int256Parts.getLo_hi().getUint64().getNumber()); + byte[] loLoBytes = getBytes(int256Parts.getLo_lo().getUint64().getNumber()); + + byte[] fullBytes = new byte[32]; + System.arraycopy(hiHiBytes, 0, fullBytes, 0, 8); + System.arraycopy(hiLoBytes, 0, fullBytes, 8, 8); + System.arraycopy(loHiBytes, 0, fullBytes, 16, 8); + System.arraycopy(loLoBytes, 0, fullBytes, 24, 8); + + return new BigInteger(fullBytes); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvInt32.java b/src/main/java/org/stellar/sdk/scval/ScvInt32.java new file mode 100644 index 000000000..228c8e90a --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvInt32.java @@ -0,0 +1,24 @@ +package org.stellar.sdk.scval; + +import org.stellar.sdk.xdr.Int32; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_I32}. */ +class ScvInt32 { + private static final SCValType TYPE = SCValType.SCV_I32; + + static SCVal toSCVal(int value) { + return new SCVal.Builder().discriminant(TYPE).i32(new Int32(value)).build(); + } + + static int fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + return scVal.getI32().getInt32(); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvInt64.java b/src/main/java/org/stellar/sdk/scval/ScvInt64.java new file mode 100644 index 000000000..cb60936f2 --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvInt64.java @@ -0,0 +1,23 @@ +package org.stellar.sdk.scval; + +import org.stellar.sdk.xdr.Int64; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_I64}. */ +class ScvInt64 { + private static final SCValType TYPE = SCValType.SCV_I64; + + static SCVal toSCVal(long value) { + return new SCVal.Builder().discriminant(TYPE).i64(new Int64(value)).build(); + } + + static long fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + return scVal.getI64().getInt64(); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvLedgerKeyContractInstance.java b/src/main/java/org/stellar/sdk/scval/ScvLedgerKeyContractInstance.java new file mode 100644 index 000000000..b73d4b18e --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvLedgerKeyContractInstance.java @@ -0,0 +1,21 @@ +package org.stellar.sdk.scval; + +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_CONTRACT_INSTANCE}. */ +class ScvLedgerKeyContractInstance { + private static final SCValType TYPE = SCValType.SCV_LEDGER_KEY_CONTRACT_INSTANCE; + + static SCVal toSCVal() { + return new SCVal.Builder().discriminant(TYPE).build(); + } + + static void fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvLedgerKeyNonce.java b/src/main/java/org/stellar/sdk/scval/ScvLedgerKeyNonce.java new file mode 100644 index 000000000..e3cbc89dc --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvLedgerKeyNonce.java @@ -0,0 +1,27 @@ +package org.stellar.sdk.scval; + +import org.stellar.sdk.xdr.Int64; +import org.stellar.sdk.xdr.SCNonceKey; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_LEDGER_KEY_NONCE}. */ +class ScvLedgerKeyNonce { + private static final SCValType TYPE = SCValType.SCV_LEDGER_KEY_NONCE; + + static SCVal toSCVal(long value) { + return new SCVal.Builder() + .discriminant(TYPE) + .nonce_key(new SCNonceKey.Builder().nonce(new Int64(value)).build()) + .build(); + } + + static long fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + return scVal.getNonce_key().getNonce().getInt64(); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvMap.java b/src/main/java/org/stellar/sdk/scval/ScvMap.java new file mode 100644 index 000000000..c94cd0ed2 --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvMap.java @@ -0,0 +1,39 @@ +package org.stellar.sdk.scval; + +import java.util.LinkedHashMap; +import java.util.Map; +import org.stellar.sdk.xdr.SCMap; +import org.stellar.sdk.xdr.SCMapEntry; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_MAP}. */ +class ScvMap { + private static final SCValType TYPE = SCValType.SCV_MAP; + + // we want to keep the order of the map entries + // this ensures that the generated XDR is deterministic. + static SCVal toSCVal(LinkedHashMap value) { + SCMapEntry[] scMapEntries = new SCMapEntry[value.size()]; + int i = 0; + for (Map.Entry entry : value.entrySet()) { + scMapEntries[i++] = + new SCMapEntry.Builder().key(entry.getKey()).val(entry.getValue()).build(); + } + return new SCVal.Builder().discriminant(TYPE).map(new SCMap(scMapEntries)).build(); + } + + static LinkedHashMap fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + LinkedHashMap map = new LinkedHashMap<>(); + for (SCMapEntry entry : scVal.getMap().getSCMap()) { + map.put(entry.getKey(), entry.getVal()); + } + return map; + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvString.java b/src/main/java/org/stellar/sdk/scval/ScvString.java new file mode 100644 index 000000000..8678c79ec --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvString.java @@ -0,0 +1,25 @@ +package org.stellar.sdk.scval; + +import org.stellar.sdk.xdr.SCString; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.XdrString; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_STRING}. */ +class ScvString { + private static final SCValType TYPE = SCValType.SCV_STRING; + + static SCVal toSCVal(byte[] value) { + return new SCVal.Builder().discriminant(TYPE).str(new SCString(new XdrString(value))).build(); + } + + static byte[] fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + return scVal.getStr().getSCString().getBytes(); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvSymbol.java b/src/main/java/org/stellar/sdk/scval/ScvSymbol.java new file mode 100644 index 000000000..57d719b16 --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvSymbol.java @@ -0,0 +1,24 @@ +package org.stellar.sdk.scval; + +import org.stellar.sdk.xdr.SCSymbol; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.XdrString; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_SYMBOL}. */ +class ScvSymbol { + private static final SCValType TYPE = SCValType.SCV_SYMBOL; + + static SCVal toSCVal(String value) { + return new SCVal.Builder().discriminant(TYPE).sym(new SCSymbol(new XdrString(value))).build(); + } + + static String fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + return scVal.getSym().getSCSymbol().toString(); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvTimePoint.java b/src/main/java/org/stellar/sdk/scval/ScvTimePoint.java new file mode 100644 index 000000000..065c31f86 --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvTimePoint.java @@ -0,0 +1,39 @@ +package org.stellar.sdk.scval; + +import java.math.BigInteger; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.TimePoint; +import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_TIMEPOINT}. */ +class ScvTimePoint { + private static final SCValType TYPE = SCValType.SCV_TIMEPOINT; + + private static final BigInteger MAX_VALUE = XdrUnsignedHyperInteger.MAX_VALUE; + private static final BigInteger MIN_VALUE = XdrUnsignedHyperInteger.MIN_VALUE; + + static SCVal toSCVal(BigInteger value) { + if (value.compareTo(MIN_VALUE) < 0 || value.compareTo(MAX_VALUE) > 0) { + throw new IllegalArgumentException( + String.format( + "invalid value, expected between %s and %s, but got %s", + MIN_VALUE, MAX_VALUE, value)); + } + + return new SCVal.Builder() + .discriminant(TYPE) + .timepoint(new TimePoint(new Uint64(new XdrUnsignedHyperInteger(value)))) + .build(); + } + + static BigInteger fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + return scVal.getTimepoint().getTimePoint().getUint64().getNumber(); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvUint128.java b/src/main/java/org/stellar/sdk/scval/ScvUint128.java new file mode 100644 index 000000000..55a9b794e --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvUint128.java @@ -0,0 +1,66 @@ +package org.stellar.sdk.scval; + +import static org.stellar.sdk.Util.getBytes; + +import java.math.BigInteger; +import java.util.Arrays; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.UInt128Parts; +import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_I32}. */ +class ScvUint128 { + private static final SCValType TYPE = SCValType.SCV_U128; + + private static final BigInteger MIN_VALUE = BigInteger.ZERO; + private static final BigInteger MAX_VALUE = + BigInteger.valueOf(2).pow(128).subtract(BigInteger.ONE); + + static SCVal toSCVal(BigInteger value) { + if (value.compareTo(MIN_VALUE) < 0 || value.compareTo(MAX_VALUE) > 0) { + throw new IllegalArgumentException( + String.format( + "invalid value, expected between %s and %s, but got %s", + MIN_VALUE, MAX_VALUE, value)); + } + + byte[] bytes = value.toByteArray(); + byte[] paddedBytes = new byte[16]; + int numBytesToCopy = Math.min(bytes.length, 16); + int copyStartIndex = bytes.length - numBytesToCopy; + System.arraycopy(bytes, copyStartIndex, paddedBytes, 16 - numBytesToCopy, numBytesToCopy); + + UInt128Parts uInt128Parts = + new UInt128Parts.Builder() + .hi( + new Uint64( + new XdrUnsignedHyperInteger( + new BigInteger(1, Arrays.copyOfRange(paddedBytes, 0, 8))))) + .lo( + new Uint64( + new XdrUnsignedHyperInteger( + new BigInteger(1, Arrays.copyOfRange(paddedBytes, 8, 16))))) + .build(); + return new SCVal.Builder().discriminant(TYPE).u128(uInt128Parts).build(); + } + + static BigInteger fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + UInt128Parts uInt128Parts = scVal.getU128(); + byte[] hiBytes = getBytes(uInt128Parts.getHi().getUint64().getNumber()); + byte[] loBytes = getBytes(uInt128Parts.getLo().getUint64().getNumber()); + + byte[] fullBytes = new byte[16]; + System.arraycopy(hiBytes, 0, fullBytes, 0, 8); + System.arraycopy(loBytes, 0, fullBytes, 8, 8); + + return new BigInteger(1, fullBytes); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvUint256.java b/src/main/java/org/stellar/sdk/scval/ScvUint256.java new file mode 100644 index 000000000..901b64d16 --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvUint256.java @@ -0,0 +1,78 @@ +package org.stellar.sdk.scval; + +import static org.stellar.sdk.Util.getBytes; + +import java.math.BigInteger; +import java.util.Arrays; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.UInt256Parts; +import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_U256}. */ +class ScvUint256 { + private static final SCValType TYPE = SCValType.SCV_U256; + + private static final BigInteger MIN_VALUE = BigInteger.ZERO; + private static final BigInteger MAX_VALUE = + BigInteger.valueOf(2).pow(256).subtract(BigInteger.ONE); + + static SCVal toSCVal(BigInteger value) { + if (value.compareTo(MIN_VALUE) < 0 || value.compareTo(MAX_VALUE) > 0) { + throw new IllegalArgumentException( + String.format( + "invalid value, expected between %s and %s, but got %s", + MIN_VALUE, MAX_VALUE, value)); + } + + byte[] bytes = value.toByteArray(); + byte[] paddedBytes = new byte[32]; + int numBytesToCopy = Math.min(bytes.length, 32); + int copyStartIndex = bytes.length - numBytesToCopy; + System.arraycopy(bytes, copyStartIndex, paddedBytes, 32 - numBytesToCopy, numBytesToCopy); + + UInt256Parts uInt256Parts = + new UInt256Parts.Builder() + .hi_hi( + new Uint64( + new XdrUnsignedHyperInteger( + new BigInteger(1, Arrays.copyOfRange(paddedBytes, 0, 8))))) + .hi_lo( + new Uint64( + new XdrUnsignedHyperInteger( + new BigInteger(1, Arrays.copyOfRange(paddedBytes, 8, 16))))) + .lo_hi( + new Uint64( + new XdrUnsignedHyperInteger( + new BigInteger(1, Arrays.copyOfRange(paddedBytes, 16, 24))))) + .lo_lo( + new Uint64( + new XdrUnsignedHyperInteger( + new BigInteger(1, Arrays.copyOfRange(paddedBytes, 24, 32))))) + .build(); + return new SCVal.Builder().discriminant(TYPE).u256(uInt256Parts).build(); + } + + static BigInteger fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + UInt256Parts uInt256Parts = scVal.getU256(); + byte[] hiHiBytes = getBytes(uInt256Parts.getHi_hi().getUint64().getNumber()); + byte[] hiLoBytes = getBytes(uInt256Parts.getHi_lo().getUint64().getNumber()); + byte[] loHiBytes = getBytes(uInt256Parts.getLo_hi().getUint64().getNumber()); + byte[] loLoBytes = getBytes(uInt256Parts.getLo_lo().getUint64().getNumber()); + + byte[] fullBytes = new byte[32]; + System.arraycopy(hiHiBytes, 0, fullBytes, 0, 8); + System.arraycopy(hiLoBytes, 0, fullBytes, 8, 8); + System.arraycopy(loHiBytes, 0, fullBytes, 16, 8); + System.arraycopy(loLoBytes, 0, fullBytes, 24, 8); + + return new BigInteger(1, fullBytes); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvUint32.java b/src/main/java/org/stellar/sdk/scval/ScvUint32.java new file mode 100644 index 000000000..bfd5e95cc --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvUint32.java @@ -0,0 +1,38 @@ +package org.stellar.sdk.scval; + +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.Uint32; +import org.stellar.sdk.xdr.XdrUnsignedInteger; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_U32}. */ +class ScvUint32 { + private static final SCValType TYPE = SCValType.SCV_U32; + + private static final long MAX_VALUE = XdrUnsignedInteger.MAX_VALUE; + private static final long MIN_VALUE = XdrUnsignedInteger.MIN_VALUE; + + static SCVal toSCVal(long value) { + if (value < MIN_VALUE || value > MAX_VALUE) { + throw new IllegalArgumentException( + String.format( + "invalid value, expected between %s and %s, but got %s", + MIN_VALUE, MAX_VALUE, value)); + } + + return new SCVal.Builder() + .discriminant(TYPE) + .u32(new Uint32(new XdrUnsignedInteger(value))) + .build(); + } + + static long fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + return scVal.getU32().getUint32().getNumber(); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvUint64.java b/src/main/java/org/stellar/sdk/scval/ScvUint64.java new file mode 100644 index 000000000..725dd6786 --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvUint64.java @@ -0,0 +1,38 @@ +package org.stellar.sdk.scval; + +import java.math.BigInteger; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_U64}. */ +class ScvUint64 { + private static final SCValType TYPE = SCValType.SCV_U64; + + private static final BigInteger MAX_VALUE = XdrUnsignedHyperInteger.MAX_VALUE; + private static final BigInteger MIN_VALUE = XdrUnsignedHyperInteger.MIN_VALUE; + + static SCVal toSCVal(BigInteger value) { + if (value.compareTo(MIN_VALUE) < 0 || value.compareTo(MAX_VALUE) > 0) { + throw new IllegalArgumentException( + String.format( + "invalid value, expected between %s and %s, but got %s", + MIN_VALUE, MAX_VALUE, value)); + } + + return new SCVal.Builder() + .discriminant(TYPE) + .u64(new Uint64(new XdrUnsignedHyperInteger(value))) + .build(); + } + + static BigInteger fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + return scVal.getU64().getUint64().getNumber(); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvVec.java b/src/main/java/org/stellar/sdk/scval/ScvVec.java new file mode 100644 index 000000000..58e676c7f --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvVec.java @@ -0,0 +1,30 @@ +package org.stellar.sdk.scval; + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.SCVec; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_VEC}. */ +class ScvVec { + private static final SCValType TYPE = SCValType.SCV_VEC; + + static SCVal toSCVal(Collection value) { + return new SCVal.Builder() + .discriminant(TYPE) + .vec(new SCVec(value.toArray(new SCVal[0]))) + .build(); + } + + static List fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + + return Arrays.asList(scVal.getVec().getSCVec()); + } +} diff --git a/src/main/java/org/stellar/sdk/scval/ScvVoid.java b/src/main/java/org/stellar/sdk/scval/ScvVoid.java new file mode 100644 index 000000000..132e163a7 --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/ScvVoid.java @@ -0,0 +1,21 @@ +package org.stellar.sdk.scval; + +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +/** Represents an {@link SCVal} with the type of {@link SCValType#SCV_VOID}. */ +class ScvVoid { + private static final SCValType TYPE = SCValType.SCV_VOID; + + static SCVal toSCVal() { + return new SCVal.Builder().discriminant(TYPE).build(); + } + + static void fromSCVal(SCVal scVal) { + if (scVal.getDiscriminant() != TYPE) { + throw new IllegalArgumentException( + String.format( + "invalid scVal type, expected %s, but got %s", TYPE, scVal.getDiscriminant())); + } + } +} diff --git a/src/main/java/org/stellar/sdk/scval/package-info.java b/src/main/java/org/stellar/sdk/scval/package-info.java new file mode 100644 index 000000000..d6f1d5b56 --- /dev/null +++ b/src/main/java/org/stellar/sdk/scval/package-info.java @@ -0,0 +1,5 @@ +/** + * {@link org.stellar.sdk.scval.Scv} provides a range of methods to help you build and parse {@link + * org.stellar.sdk.xdr.SCVal} more conveniently. + */ +package org.stellar.sdk.scval; diff --git a/src/test/java/org/stellar/sdk/AddressTest.java b/src/test/java/org/stellar/sdk/AddressTest.java index 28e843fdb..6a2000d90 100644 --- a/src/test/java/org/stellar/sdk/AddressTest.java +++ b/src/test/java/org/stellar/sdk/AddressTest.java @@ -18,7 +18,7 @@ public void testConstructorAccountId() { String accountId = "GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ"; Address address = new Address(accountId); assertEquals(address.toString(), accountId); - assertEquals(address.getType(), Address.AddressType.ACCOUNT); + assertEquals(address.getAddressType(), Address.AddressType.ACCOUNT); } @Test @@ -26,7 +26,7 @@ public void testConstructorContractId() { String contractId = "CA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUWDA"; Address address = new Address(contractId); assertEquals(address.toString(), contractId); - assertEquals(address.getType(), Address.AddressType.CONTRACT); + assertEquals(address.getAddressType(), Address.AddressType.CONTRACT); } @Test @@ -57,7 +57,7 @@ public void testFromAccountByte() { byte[] accountIdBytes = StrKey.decodeStellarAccountId(accountId); Address address = Address.fromAccount(accountIdBytes); assertEquals(address.toString(), accountId); - assertEquals(address.getType(), Address.AddressType.ACCOUNT); + assertEquals(address.getAddressType(), Address.AddressType.ACCOUNT); } @Test @@ -66,7 +66,7 @@ public void testFromContractByte() { byte[] contractIdBytes = StrKey.decodeContractId(contractId); Address address = Address.fromContract(contractIdBytes); assertEquals(address.toString(), contractId); - assertEquals(address.getType(), Address.AddressType.CONTRACT); + assertEquals(address.getAddressType(), Address.AddressType.CONTRACT); } @Test @@ -107,7 +107,7 @@ public void testFromSCAddressAccount() throws IOException { Address address = Address.fromSCAddress(scAddress); String accountId = "GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ"; assertEquals(address.toString(), accountId); - assertEquals(address.getType(), Address.AddressType.ACCOUNT); + assertEquals(address.getAddressType(), Address.AddressType.ACCOUNT); } @Test @@ -120,7 +120,7 @@ public void testFromSCAddressContract() throws IOException { Address address = Address.fromSCAddress(scAddress); String contract = "CA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUWDA"; assertEquals(address.toString(), contract); - assertEquals(address.getType(), Address.AddressType.CONTRACT); + assertEquals(address.getAddressType(), Address.AddressType.CONTRACT); } @Test @@ -146,7 +146,7 @@ public void testFromSCVal() throws IOException { Address address = Address.fromSCVal(scVal); String contract = "CA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUWDA"; assertEquals(address.toString(), contract); - assertEquals(address.getType(), Address.AddressType.CONTRACT); + assertEquals(address.getAddressType(), Address.AddressType.CONTRACT); } @Test diff --git a/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java b/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java index c241e7147..bfe136a6e 100644 --- a/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java +++ b/src/test/java/org/stellar/sdk/InvokeHostFunctionOperationTest.java @@ -9,6 +9,7 @@ import java.util.Collections; import java.util.List; import org.junit.Test; +import org.stellar.sdk.scval.Scv; import org.stellar.sdk.xdr.ContractExecutable; import org.stellar.sdk.xdr.ContractExecutableType; import org.stellar.sdk.xdr.ContractIDPreimage; @@ -479,12 +480,7 @@ public void createTokenContractOperationBuilderWithAsset() { public void invokeContractFunctionOperationBuilder() { String contractId = "CA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUWDA"; String funcName = "hello"; - List parameters = - Collections.singletonList( - new SCVal.Builder() - .discriminant(SCValType.SCV_SYMBOL) - .sym(new SCSymbol(new XdrString("world"))) - .build()); + List parameters = Collections.singletonList(Scv.toSymbol("world")); InvokeHostFunctionOperation operation = InvokeHostFunctionOperation.invokeContractFunctionOperationBuilder( contractId, funcName, parameters) diff --git a/src/test/java/org/stellar/sdk/scval/ScvAddressTest.java b/src/test/java/org/stellar/sdk/scval/ScvAddressTest.java new file mode 100644 index 000000000..4b1ab6f21 --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvAddressTest.java @@ -0,0 +1,42 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.stellar.sdk.Address; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvAddressTest { + @Test + public void testScvAddressFromAddress() { + String publicKey = "GAHJJJKMOKYE4RVPZEWZTKH5FVI4PA3VL7GK2LFNUBSGBV6OJP7TQSLX"; + Address address = new Address(publicKey); + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_ADDRESS) + .address(address.toSCAddress()) + .build(); + + SCVal actualScVal = Scv.toAddress(address); + assertEquals(expectedScVal, actualScVal); + assertEquals(address, Scv.fromAddress(actualScVal)); + } + + @Test + public void testScvAddressFromKeyString() { + String publicKey = "GAHJJJKMOKYE4RVPZEWZTKH5FVI4PA3VL7GK2LFNUBSGBV6OJP7TQSLX"; + Address address = new Address(publicKey); + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_ADDRESS) + .address(address.toSCAddress()) + .build(); + + SCVal actualScVal = Scv.toAddress(publicKey); + assertEquals(expectedScVal, actualScVal); + assertEquals(address, Scv.fromAddress(actualScVal)); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvBooleanTest.java b/src/test/java/org/stellar/sdk/scval/ScvBooleanTest.java new file mode 100644 index 000000000..48bc693f0 --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvBooleanTest.java @@ -0,0 +1,18 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvBooleanTest { + @Test + public void testScvBoolean() { + boolean value = true; + SCVal expectedScVal = new SCVal.Builder().discriminant(SCValType.SCV_BOOL).b(value).build(); + SCVal actualScVal = Scv.toBoolean(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromBoolean(actualScVal)); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvBytesTest.java b/src/test/java/org/stellar/sdk/scval/ScvBytesTest.java new file mode 100644 index 000000000..7a1c6ce9d --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvBytesTest.java @@ -0,0 +1,22 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.stellar.sdk.xdr.SCBytes; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvBytesTest { + @Test + public void testScvBytes() { + byte[] data = new byte[] {0x01, 0x02, 0x03}; + + SCVal expectedScVal = + new SCVal.Builder().discriminant(SCValType.SCV_BYTES).bytes(new SCBytes(data)).build(); + + SCVal actualScVal = Scv.toBytes(data); + assertEquals(expectedScVal, actualScVal); + assertEquals(data, Scv.fromBytes(actualScVal)); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvContractInstanceTest.java b/src/test/java/org/stellar/sdk/scval/ScvContractInstanceTest.java new file mode 100644 index 000000000..94b30b302 --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvContractInstanceTest.java @@ -0,0 +1,30 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.stellar.sdk.xdr.ContractExecutable; +import org.stellar.sdk.xdr.ContractExecutableType; +import org.stellar.sdk.xdr.SCContractInstance; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvContractInstanceTest { + @Test + public void testScvContractInstance() { + SCContractInstance value = + new SCContractInstance.Builder() + .executable( + new ContractExecutable.Builder() + .discriminant(ContractExecutableType.CONTRACT_EXECUTABLE_TOKEN) + .build()) + .build(); + + SCVal expectedScVal = + new SCVal.Builder().discriminant(SCValType.SCV_CONTRACT_INSTANCE).instance(value).build(); + + SCVal actualScVal = Scv.toContractInstance(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromContractInstance(actualScVal)); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvDurationTest.java b/src/test/java/org/stellar/sdk/scval/ScvDurationTest.java new file mode 100644 index 000000000..558ce8a69 --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvDurationTest.java @@ -0,0 +1,55 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import java.math.BigInteger; +import org.junit.Test; +import org.stellar.sdk.xdr.Duration; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; + +public class ScvDurationTest { + @Test + public void testScvDurationMax() { + BigInteger value = XdrUnsignedHyperInteger.MAX_VALUE; + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_DURATION) + .duration(new Duration(new Uint64(new XdrUnsignedHyperInteger(value)))) + .build(); + + SCVal actualScVal = Scv.toDuration(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromDuration(actualScVal)); + } + + @Test + public void testScvDurationMin() { + BigInteger value = XdrUnsignedHyperInteger.MIN_VALUE; + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_DURATION) + .duration(new Duration(new Uint64(new XdrUnsignedHyperInteger(value)))) + .build(); + + SCVal actualScVal = Scv.toDuration(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromDuration(actualScVal)); + } + + @Test(expected = IllegalArgumentException.class) + public void testScvDurationMoreThanMaxThrows() { + BigInteger value = XdrUnsignedHyperInteger.MAX_VALUE.add(BigInteger.ONE); + ScvDuration.toSCVal(value); + } + + @Test(expected = IllegalArgumentException.class) + public void testScvDurationLessThanMinThrows() { + BigInteger value = XdrUnsignedHyperInteger.MIN_VALUE.subtract(BigInteger.ONE); + ScvDuration.toSCVal(value); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvErrorTest.java b/src/test/java/org/stellar/sdk/scval/ScvErrorTest.java new file mode 100644 index 000000000..c82a696f2 --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvErrorTest.java @@ -0,0 +1,29 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.stellar.sdk.xdr.SCError; +import org.stellar.sdk.xdr.SCErrorCode; +import org.stellar.sdk.xdr.SCErrorType; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvErrorTest { + @Test + public void testScvError() { + SCErrorType errorType = SCErrorType.SCE_CONTEXT; + SCErrorCode errorCode = SCErrorCode.SCEC_UNEXPECTED_TYPE; + SCError scError = new SCError.Builder().code(errorCode).type(errorType).build(); + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_ERROR) + .error(new SCError.Builder().code(errorCode).type(errorType).build()) + .build(); + + SCVal actualScVal = Scv.toError(scError); + assertEquals(expectedScVal, actualScVal); + assertEquals(scError, Scv.fromError(actualScVal)); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvInt128Test.java b/src/test/java/org/stellar/sdk/scval/ScvInt128Test.java new file mode 100644 index 000000000..d05507d9b --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvInt128Test.java @@ -0,0 +1,124 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.math.BigInteger; +import java.util.Arrays; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Value; +import org.junit.Test; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvInt128Test { + private static final BigInteger MIN_VALUE = BigInteger.valueOf(-2).pow(127); + private static final BigInteger MAX_VALUE = + BigInteger.valueOf(2).pow(127).subtract(BigInteger.ONE); + + @Test + public void testScvInt128() throws IOException { + List values = + Arrays.asList( + new TestCase( + BigInteger.ZERO, new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}), + new TestCase( + BigInteger.valueOf(1), new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}), + new TestCase( + BigInteger.valueOf(-1), + new byte[] { + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff + }), + new TestCase( + BigInteger.valueOf(2L).pow(64), + new byte[] {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}), + new TestCase( + BigInteger.valueOf(2L).pow(64).negate(), + new byte[] { + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }), + new TestCase( + MAX_VALUE, + new byte[] { + (byte) 0x7f, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff + }), + new TestCase( + MIN_VALUE, new byte[] {(byte) 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0})); + + for (TestCase value : values) { + checkScvInt128(value); + } + } + + @Test(expected = IllegalArgumentException.class) + public void testScvInt128GreaterThanMaxValueThrows() { + Scv.toInt128(MAX_VALUE.add(BigInteger.ONE)); + } + + @Test(expected = IllegalArgumentException.class) + public void testScvInt128LessThanMinValueThrows() { + Scv.toInt128(MIN_VALUE.subtract(BigInteger.ONE)); + } + + private void checkScvInt128(TestCase value) throws IOException { + + SCVal scVal = Scv.toInt128(value.v); + assertEquals(scVal.getDiscriminant(), SCValType.SCV_I128); + assertEquals(Scv.fromInt128(scVal), value.v); + assertArrayEquals(scVal.getI128().toXdrByteArray(), value.getExpectedBytes()); + } + + @Value + @AllArgsConstructor + private static class TestCase { + BigInteger v; + byte[] expectedBytes; + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvInt256Test.java b/src/test/java/org/stellar/sdk/scval/ScvInt256Test.java new file mode 100644 index 000000000..ebd75704b --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvInt256Test.java @@ -0,0 +1,307 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.math.BigInteger; +import java.util.Arrays; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Value; +import org.junit.Test; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvInt256Test { + private static final BigInteger MIN_VALUE = BigInteger.valueOf(-2).pow(255); + private static final BigInteger MAX_VALUE = + BigInteger.valueOf(2).pow(255).subtract(BigInteger.ONE); + + @Test + public void testScvInt256() throws IOException { + List values = + Arrays.asList( + new TestCase(BigInteger.ZERO, new byte[32]), + new TestCase( + BigInteger.valueOf(1), + new byte[] { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1 + }), + new TestCase( + BigInteger.valueOf(-1), + new byte[] { + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff + }), + new TestCase( + BigInteger.valueOf(2L).pow(64), + new byte[] { + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x1, + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x0 + }), + new TestCase( + BigInteger.valueOf(2L).pow(64).negate(), + new byte[] { + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0 + }), + new TestCase( + BigInteger.valueOf(2L).pow(128), + new byte[] { + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x1, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x0 + }), + new TestCase( + BigInteger.valueOf(2L).pow(128).negate(), + new byte[] { + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0 + }), + new TestCase( + BigInteger.valueOf(2L).pow(192), + new byte[] { + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x1, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x0 + }), + new TestCase( + BigInteger.valueOf(2L).pow(192).negate(), + new byte[] { + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0, + (byte) 0x0 + }), + new TestCase( + MAX_VALUE, + new byte[] { + (byte) 0x7f, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + }), + new TestCase( + MIN_VALUE, + new byte[] { + (byte) 0x80, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + })); + + for (TestCase value : values) { + checkScvInt256(value); + } + } + + @Test(expected = IllegalArgumentException.class) + public void testScvInt256GreaterThanMaxValueThrows() { + Scv.toInt256(MAX_VALUE.add(BigInteger.ONE)); + } + + @Test(expected = IllegalArgumentException.class) + public void testScvInt256LessThanMinValueThrows() { + Scv.toInt256(MIN_VALUE.subtract(BigInteger.ONE)); + } + + private void checkScvInt256(TestCase value) throws IOException { + SCVal scVal = Scv.toInt256(value.v); + assertEquals(scVal.getDiscriminant(), SCValType.SCV_I256); + assertEquals(Scv.fromInt256(scVal), value.v); + assertArrayEquals(scVal.getI256().toXdrByteArray(), value.getExpectedBytes()); + } + + @Value + @AllArgsConstructor + private static class TestCase { + BigInteger v; + byte[] expectedBytes; + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvInt32Test.java b/src/test/java/org/stellar/sdk/scval/ScvInt32Test.java new file mode 100644 index 000000000..aa53ce9ad --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvInt32Test.java @@ -0,0 +1,22 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.stellar.sdk.xdr.Int32; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvInt32Test { + @Test + public void testScvInt32() { + int value = -234; + + SCVal expectedScVal = + new SCVal.Builder().discriminant(SCValType.SCV_I32).i32(new Int32(value)).build(); + + SCVal actualScVal = Scv.toInt32(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromInt32(actualScVal)); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvInt64Test.java b/src/test/java/org/stellar/sdk/scval/ScvInt64Test.java new file mode 100644 index 000000000..50f40d996 --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvInt64Test.java @@ -0,0 +1,22 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.stellar.sdk.xdr.Int64; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvInt64Test { + @Test + public void testScvInt64() { + long value = 23453454L; + + SCVal expectedScVal = + new SCVal.Builder().discriminant(SCValType.SCV_I64).i64(new Int64(value)).build(); + + SCVal actualScVal = Scv.toInt64(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromInt64(actualScVal)); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvLedgerKeyContractInstanceTest.java b/src/test/java/org/stellar/sdk/scval/ScvLedgerKeyContractInstanceTest.java new file mode 100644 index 000000000..08069da56 --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvLedgerKeyContractInstanceTest.java @@ -0,0 +1,19 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvLedgerKeyContractInstanceTest { + @Test + public void testScvLedgerKeyContractInstance() { + SCVal expectedScVal = + new SCVal.Builder().discriminant(SCValType.SCV_LEDGER_KEY_CONTRACT_INSTANCE).build(); + + SCVal actualScVal = Scv.toLedgerKeyContractInstance(); + assertEquals(expectedScVal, actualScVal); + Scv.fromLedgerKeyContractInstance(actualScVal); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvLedgerKeyNonceTest.java b/src/test/java/org/stellar/sdk/scval/ScvLedgerKeyNonceTest.java new file mode 100644 index 000000000..a9d07f9fd --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvLedgerKeyNonceTest.java @@ -0,0 +1,25 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.stellar.sdk.xdr.Int64; +import org.stellar.sdk.xdr.SCNonceKey; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvLedgerKeyNonceTest { + @Test + public void testScvLedgerKeyNonce() { + long value = 123456L; + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_LEDGER_KEY_NONCE) + .nonce_key(new SCNonceKey.Builder().nonce(new Int64(value)).build()) + .build(); + + SCVal actualScVal = Scv.toLedgerKeyNonce(value); + assertEquals(expectedScVal, actualScVal); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvMapTest.java b/src/test/java/org/stellar/sdk/scval/ScvMapTest.java new file mode 100644 index 000000000..72d7f9adc --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvMapTest.java @@ -0,0 +1,40 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import java.util.LinkedHashMap; +import org.junit.Test; +import org.stellar.sdk.xdr.SCMap; +import org.stellar.sdk.xdr.SCMapEntry; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvMapTest { + @Test + public void testScvMap() { + LinkedHashMap value = new LinkedHashMap<>(); + value.put(Scv.toSymbol("key1"), Scv.toString("value1")); + value.put(Scv.toString("key2"), Scv.toInt32(123)); + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_MAP) + .map( + new SCMap( + new SCMapEntry[] { + new SCMapEntry.Builder() + .key(Scv.toSymbol("key1")) + .val(Scv.toString("value1")) + .build(), + new SCMapEntry.Builder() + .key(Scv.toString("key2")) + .val(Scv.toInt32(123)) + .build(), + })) + .build(); + + SCVal actualScVal = Scv.toMap(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromMap(actualScVal)); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvStringTest.java b/src/test/java/org/stellar/sdk/scval/ScvStringTest.java new file mode 100644 index 000000000..69755fd2e --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvStringTest.java @@ -0,0 +1,42 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.stellar.sdk.xdr.SCString; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.XdrString; + +public class ScvStringTest { + @Test + public void testScvStringFromString() { + String value = "hello"; + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_STRING) + .str(new SCString(new XdrString(value))) + .build(); + + SCVal actualScVal = Scv.toString(value); + assertEquals(expectedScVal, actualScVal); + assertArrayEquals(value.getBytes(), Scv.fromString(actualScVal)); + } + + @Test + public void testScvStringFromBytes() { + byte[] value = new byte[] {0, 1, 2, 3}; + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_STRING) + .str(new SCString(new XdrString(value))) + .build(); + + SCVal actualScVal = Scv.toString(value); + assertEquals(expectedScVal, actualScVal); + assertArrayEquals(value, Scv.fromString(actualScVal)); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvSymbolTest.java b/src/test/java/org/stellar/sdk/scval/ScvSymbolTest.java new file mode 100644 index 000000000..193883f76 --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvSymbolTest.java @@ -0,0 +1,26 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.stellar.sdk.xdr.SCSymbol; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.XdrString; + +public class ScvSymbolTest { + @Test + public void testScvSymbol() { + String value = "hello"; + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_SYMBOL) + .sym(new SCSymbol(new XdrString(value))) + .build(); + + SCVal actualScVal = Scv.toSymbol(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromSymbol(actualScVal)); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvTimePointTest.java b/src/test/java/org/stellar/sdk/scval/ScvTimePointTest.java new file mode 100644 index 000000000..cc2274e2b --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvTimePointTest.java @@ -0,0 +1,55 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import java.math.BigInteger; +import org.junit.Test; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.TimePoint; +import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; + +public class ScvTimePointTest { + @Test + public void testScvTimePointMax() { + BigInteger value = XdrUnsignedHyperInteger.MAX_VALUE; + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_TIMEPOINT) + .timepoint(new TimePoint(new Uint64(new XdrUnsignedHyperInteger(value)))) + .build(); + + SCVal actualScVal = Scv.toTimePoint(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromTimePoint(actualScVal)); + } + + @Test + public void testScvTimePointMin() { + BigInteger value = XdrUnsignedHyperInteger.MIN_VALUE; + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_TIMEPOINT) + .timepoint(new TimePoint(new Uint64(new XdrUnsignedHyperInteger(value)))) + .build(); + + SCVal actualScVal = Scv.toTimePoint(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromTimePoint(actualScVal)); + } + + @Test(expected = IllegalArgumentException.class) + public void testScvTimePointMoreThanMaxThrows() { + BigInteger value = XdrUnsignedHyperInteger.MAX_VALUE.add(BigInteger.ONE); + Scv.toTimePoint(value); + } + + @Test(expected = IllegalArgumentException.class) + public void testScvTimePointLessThanMinThrows() { + BigInteger value = XdrUnsignedHyperInteger.MIN_VALUE.subtract(BigInteger.ONE); + Scv.toTimePoint(value); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvUint128Test.java b/src/test/java/org/stellar/sdk/scval/ScvUint128Test.java new file mode 100644 index 000000000..e51e3d38d --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvUint128Test.java @@ -0,0 +1,80 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.math.BigInteger; +import java.util.Arrays; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Value; +import org.junit.Test; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvUint128Test { + private static final BigInteger MIN_VALUE = BigInteger.ZERO; + private static final BigInteger MAX_VALUE = + BigInteger.valueOf(2).pow(128).subtract(BigInteger.ONE); + + @Test + public void testScvUint128() throws IOException { + List values = + Arrays.asList( + new TestCase(MIN_VALUE, new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}), + new TestCase( + BigInteger.valueOf(1), new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}), + new TestCase( + BigInteger.valueOf(2L).pow(64), + new byte[] {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}), + new TestCase( + MAX_VALUE, + new byte[] { + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff + })); + + for (TestCase value : values) { + checkScvUint128(value); + } + } + + @Test(expected = IllegalArgumentException.class) + public void testScvUint128GreaterThanMaxValueThrows() { + Scv.toUint128(MAX_VALUE.add(BigInteger.ONE)); + } + + @Test(expected = IllegalArgumentException.class) + public void testScvUint128LessThanMinValueThrows() { + Scv.toUint128(MIN_VALUE.subtract(BigInteger.ONE)); + } + + private void checkScvUint128(TestCase value) throws IOException { + SCVal scVal = Scv.toUint128(value.v); + assertEquals(scVal.getDiscriminant(), SCValType.SCV_U128); + assertEquals(Scv.fromUint128(scVal), value.v); + assertArrayEquals(scVal.getU128().toXdrByteArray(), value.getExpectedBytes()); + } + + @Value + @AllArgsConstructor + private static class TestCase { + BigInteger v; + byte[] expectedBytes; + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvUint256Test.java b/src/test/java/org/stellar/sdk/scval/ScvUint256Test.java new file mode 100644 index 000000000..f12360be1 --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvUint256Test.java @@ -0,0 +1,115 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.math.BigInteger; +import java.util.Arrays; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Value; +import org.junit.Test; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvUint256Test { + private static final BigInteger MIN_VALUE = BigInteger.ZERO; + private static final BigInteger MAX_VALUE = + BigInteger.valueOf(2).pow(256).subtract(BigInteger.ONE); + + @Test + public void testScvUint256() throws IOException { + List values = + Arrays.asList( + new TestCase(MIN_VALUE, new byte[32]), + new TestCase( + BigInteger.valueOf(1), + new byte[] { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1 + }), + new TestCase( + BigInteger.valueOf(2).pow(64), + new byte[] { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0 + }), + new TestCase( + BigInteger.valueOf(2).pow(128), + new byte[] { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 + }), + new TestCase( + BigInteger.valueOf(2).pow(192), + new byte[] { + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 + }), + new TestCase( + MAX_VALUE, + new byte[] { + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff, + (byte) 0xff + })); + + for (TestCase value : values) { + checkScvUint256(value); + } + } + + @Test(expected = IllegalArgumentException.class) + public void testScvUint256GreaterThanMaxValueThrows() { + Scv.toUint256(MAX_VALUE.add(BigInteger.ONE)); + } + + @Test(expected = IllegalArgumentException.class) + public void testScvUint256LessThanMinValueThrows() { + Scv.toUint256(MIN_VALUE.subtract(BigInteger.ONE)); + } + + private void checkScvUint256(TestCase value) throws IOException { + SCVal scVal = Scv.toUint256(value.v); + assertEquals(scVal.getDiscriminant(), SCValType.SCV_U256); + assertEquals(Scv.fromUint256(scVal), value.v); + assertArrayEquals(scVal.getU256().toXdrByteArray(), value.getExpectedBytes()); + } + + @Value + @AllArgsConstructor + private static class TestCase { + BigInteger v; + byte[] expectedBytes; + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvUint32Test.java b/src/test/java/org/stellar/sdk/scval/ScvUint32Test.java new file mode 100644 index 000000000..1b81318df --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvUint32Test.java @@ -0,0 +1,53 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.Uint32; +import org.stellar.sdk.xdr.XdrUnsignedInteger; + +public class ScvUint32Test { + @Test + public void testScvUint32Max() { + long value = XdrUnsignedInteger.MAX_VALUE; + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_U32) + .u32(new Uint32(new XdrUnsignedInteger(value))) + .build(); + + SCVal actualScVal = Scv.toUint32(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromUint32(actualScVal)); + } + + @Test + public void testScvUint32Min() { + long value = XdrUnsignedInteger.MAX_VALUE; + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_U32) + .u32(new Uint32(new XdrUnsignedInteger(value))) + .build(); + + SCVal actualScVal = Scv.toUint32(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromUint32(actualScVal)); + } + + @Test(expected = IllegalArgumentException.class) + public void testScvUint32Overflow() { + long value = XdrUnsignedInteger.MAX_VALUE + 1; + Scv.toUint32(value); + } + + @Test(expected = IllegalArgumentException.class) + public void testScvUint32Underflow() { + long value = XdrUnsignedInteger.MIN_VALUE - 1; + Scv.toUint32(value); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvUint64Test.java b/src/test/java/org/stellar/sdk/scval/ScvUint64Test.java new file mode 100644 index 000000000..28f37266f --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvUint64Test.java @@ -0,0 +1,52 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import java.math.BigInteger; +import org.junit.Test; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; +import org.stellar.sdk.xdr.Uint64; +import org.stellar.sdk.xdr.XdrUnsignedHyperInteger; + +public class ScvUint64Test { + @Test + public void testScvUint64Max() { + BigInteger value = XdrUnsignedHyperInteger.MAX_VALUE; + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_U64) + .u64(new Uint64(new XdrUnsignedHyperInteger(value))) + .build(); + + SCVal actualScVal = Scv.toUint64(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromUint64(actualScVal)); + } + + @Test + public void testScvUint64Min() { + BigInteger value = XdrUnsignedHyperInteger.MIN_VALUE; + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_U64) + .u64(new Uint64(new XdrUnsignedHyperInteger(value))) + .build(); + + SCVal actualScVal = Scv.toUint64(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromUint64(actualScVal)); + } + + @Test(expected = IllegalArgumentException.class) + public void testScvUint64GreaterThanMaxValueThrows() { + Scv.toUint64(XdrUnsignedHyperInteger.MAX_VALUE.add(BigInteger.ONE)); + } + + @Test(expected = IllegalArgumentException.class) + public void testScvUint64LessThanMinValueThrows() { + Scv.toUint64(XdrUnsignedHyperInteger.MIN_VALUE.subtract(BigInteger.ONE)); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvVecTest.java b/src/test/java/org/stellar/sdk/scval/ScvVecTest.java new file mode 100644 index 000000000..86477bfea --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvVecTest.java @@ -0,0 +1,30 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.List; +import org.junit.Test; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvVecTest { + @Test + public void testScvVec() { + List value = new ArrayList<>(); + value.add(Scv.toInt32(123)); + value.add(Scv.toString("value1")); + + SCVal expectedScVal = + new SCVal.Builder() + .discriminant(SCValType.SCV_VEC) + .vec( + new org.stellar.sdk.xdr.SCVec( + new SCVal[] {Scv.toInt32(123), Scv.toString("value1")})) + .build(); + + SCVal actualScVal = Scv.toVec(value); + assertEquals(expectedScVal, actualScVal); + assertEquals(value, Scv.fromVec(actualScVal)); + } +} diff --git a/src/test/java/org/stellar/sdk/scval/ScvVoidTest.java b/src/test/java/org/stellar/sdk/scval/ScvVoidTest.java new file mode 100644 index 000000000..7357913ae --- /dev/null +++ b/src/test/java/org/stellar/sdk/scval/ScvVoidTest.java @@ -0,0 +1,18 @@ +package org.stellar.sdk.scval; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.stellar.sdk.xdr.SCVal; +import org.stellar.sdk.xdr.SCValType; + +public class ScvVoidTest { + @Test + public void testScvVoid() { + SCVal expectedScVal = new SCVal.Builder().discriminant(SCValType.SCV_VOID).build(); + + SCVal actualScVal = Scv.toVoid(); + assertEquals(expectedScVal, actualScVal); + Scv.fromVoid(actualScVal); + } +} From 6e9badb007c247eebe52d564049464fb57ab3701 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Mon, 14 Aug 2023 16:52:33 +0800 Subject: [PATCH 10/29] Preserve existing auth entries after simulation if they're present (#505) --- .../java/org/stellar/sdk/SorobanServer.java | 32 ++++++++++++------- .../org/stellar/sdk/SorobanServerTest.java | 27 ++++++---------- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/src/main/java/org/stellar/sdk/SorobanServer.java b/src/main/java/org/stellar/sdk/SorobanServer.java index 410721bc9..ff7f29aac 100644 --- a/src/main/java/org/stellar/sdk/SorobanServer.java +++ b/src/main/java/org/stellar/sdk/SorobanServer.java @@ -354,7 +354,11 @@ public SimulateTransactionResponse simulateTransaction(Transaction transaction) * must be one of {@link InvokeHostFunctionOperation}, {@link * BumpFootprintExpirationOperation}, or {@link RestoreFootprintOperation}. Any provided * footprint will be ignored. You can use {@link Transaction#isSorobanTransaction()} to check - * if a transaction is a Soroban transaction. + * if a transaction is a Soroban transaction. Any provided footprint will be overwritten. + * However, if your operation has existing auth entries, they will be preferred over ALL auth + * entries from the simulation. In other words, if you include auth entries, you don't care + * about the auth returned from the simulation. Other fields (footprint, etc.) will be filled + * as normal. * @return Returns a copy of the {@link Transaction}, with the expected authorizations (in the * case of invocation) and ledger footprint added. The transaction fee will also automatically * be padded with the contract's minimum resource fees discovered from the simulation. @@ -422,24 +426,30 @@ private Transaction assembleTransaction( Operation operation = transaction.getOperations()[0]; if (operation instanceof InvokeHostFunctionOperation) { - Collection originalEntries = + // If the operation is an InvokeHostFunctionOperation, we need to update the auth entries if + // existing entries are empty and the simulation result contains auth entries. + Collection existingEntries = ((InvokeHostFunctionOperation) operation).getAuth(); - List newEntries = new ArrayList<>(originalEntries); - if (simulateHostFunctionResult.getAuth() != null) { + if (existingEntries.isEmpty() + && simulateHostFunctionResult.getAuth() != null + && !simulateHostFunctionResult.getAuth().isEmpty()) { + List authorizationEntries = + new ArrayList<>(simulateHostFunctionResult.getAuth().size()); for (String auth : simulateHostFunctionResult.getAuth()) { try { - newEntries.add(SorobanAuthorizationEntry.fromXdrBase64(auth)); + authorizationEntries.add(SorobanAuthorizationEntry.fromXdrBase64(auth)); } catch (IOException e) { throw new IllegalArgumentException("Invalid auth: " + auth, e); } } + + operation = + InvokeHostFunctionOperation.builder() + .hostFunction(((InvokeHostFunctionOperation) operation).getHostFunction()) + .sourceAccount(operation.getSourceAccount()) + .auth(authorizationEntries) + .build(); } - operation = - InvokeHostFunctionOperation.builder() - .hostFunction(((InvokeHostFunctionOperation) operation).getHostFunction()) - .sourceAccount(operation.getSourceAccount()) - .auth(newEntries) - .build(); } SorobanTransactionData sorobanData; diff --git a/src/test/java/org/stellar/sdk/SorobanServerTest.java b/src/test/java/org/stellar/sdk/SorobanServerTest.java index 57bba78ee..c8671d791 100644 --- a/src/test/java/org/stellar/sdk/SorobanServerTest.java +++ b/src/test/java/org/stellar/sdk/SorobanServerTest.java @@ -1,5 +1,6 @@ package org.stellar.sdk; +import static com.google.common.collect.ImmutableList.of; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -15,7 +16,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.Optional; import okhttp3.HttpUrl; import okhttp3.mockwebserver.Dispatcher; @@ -104,8 +104,7 @@ public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) throws InterruptedException { GetLedgerEntriesRequest expectedRequest = new GetLedgerEntriesRequest( - Collections.singletonList( - "AAAAAAAAAADBPp7TMinJylnn+6dQXJACNc15LF+aJ2Py1BaR4P10JA==")); + of("AAAAAAAAAADBPp7TMinJylnn+6dQXJACNc15LF+aJ2Py1BaR4P10JA==")); SorobanRpcRequest sorobanRpcRequest = gson.fromJson( recordedRequest.getBody().readUtf8(), @@ -256,8 +255,7 @@ public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) .build(); GetLedgerEntriesRequest expectedRequest = - new GetLedgerEntriesRequest( - Collections.singletonList(ledgerKeyToXdrBase64(ledgerKey))); + new GetLedgerEntriesRequest(of(ledgerKeyToXdrBase64(ledgerKey))); SorobanRpcRequest sorobanRpcRequest = gson.fromJson( recordedRequest.getBody().readUtf8(), @@ -326,8 +324,7 @@ public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) .build(); GetLedgerEntriesRequest expectedRequest = - new GetLedgerEntriesRequest( - Collections.singletonList(ledgerKeyToXdrBase64(ledgerKey))); + new GetLedgerEntriesRequest(of(ledgerKeyToXdrBase64(ledgerKey))); SorobanRpcRequest sorobanRpcRequest = gson.fromJson( recordedRequest.getBody().readUtf8(), @@ -546,9 +543,7 @@ public void testGetEvents() throws IOException, SorobanRpcErrorResponse { GetEventsRequest.EventFilter eventFilter = GetEventsRequest.EventFilter.builder() - .contractIds( - Collections.singletonList( - "607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0")) + .contractIds(of("607682f2477a6be8cdf0fdf32be13d5f25a686cc094fd93d5aa3d7b68232d0c0")) .type(EventFilterType.CONTRACT) .topic(Arrays.asList("AAAADwAAAAdDT1VOVEVSAA==", "AAAADwAAAAlpbmNyZW1lbnQAAAA=")) .build(); @@ -851,7 +846,7 @@ public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) ((InvokeHostFunctionOperation) transaction.getOperations()[0]).getHostFunction()) .sourceAccount(transaction.getOperations()[0].getSourceAccount()) .auth( - Collections.singletonList( + of( sorobanAuthorizationEntryFromXdrBase64( "AAAAAAAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAoAAAAA"))) .build(); @@ -970,7 +965,7 @@ public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) ((InvokeHostFunctionOperation) transaction.getOperations()[0]).getHostFunction()) .sourceAccount(transaction.getOperations()[0].getSourceAccount()) .auth( - Collections.singletonList( + of( sorobanAuthorizationEntryFromXdrBase64( "AAAAAAAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAoAAAAA"))) .build(); @@ -1059,7 +1054,7 @@ public void testPrepareTransactionWithAuth() .build()) .build(); - Transaction transaction = buildSorobanTransaction(null, Collections.singletonList(auth)); + Transaction transaction = buildSorobanTransaction(null, of(auth)); MockWebServer mockWebServer = new MockWebServer(); Dispatcher dispatcher = @@ -1098,11 +1093,7 @@ public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) .hostFunction( ((InvokeHostFunctionOperation) transaction.getOperations()[0]).getHostFunction()) .sourceAccount(transaction.getOperations()[0].getSourceAccount()) - .auth( - Arrays.asList( - auth, - sorobanAuthorizationEntryFromXdrBase64( - "AAAAAAAAAAAAAAABxYsr+8TwVOcyT2vyDK0+Am5Bu60abSDD19SRje0WVBEAAAAJaW5jcmVtZW50AAAAAAAAAgAAABIAAAAAAAAAAFi3xKLI8peqjz0kcSgf38zsr+SOVmMxPsGOEqc+ypihAAAAAwAAAAoAAAAA"))) + .auth(of(auth)) .build(); Transaction expectedTx = new Transaction( From 4181dc0ecf8332e694e51abccf61a3ebeaa3f00d Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Mon, 14 Aug 2023 23:41:40 +0800 Subject: [PATCH 11/29] Add SorobanDataBuilder to prepare sorobanData easily. (#509) --- .../org/stellar/sdk/SorobanDataBuilder.java | 166 ++++++++++++++++++ .../java/org/stellar/sdk/Transaction.java | 2 +- .../org/stellar/sdk/TransactionBuilder.java | 28 +-- .../stellar/sdk/SorobanDataBuilderTest.java | 145 +++++++++++++++ .../org/stellar/sdk/SorobanServerTest.java | 63 ++++--- 5 files changed, 363 insertions(+), 41 deletions(-) create mode 100644 src/main/java/org/stellar/sdk/SorobanDataBuilder.java create mode 100644 src/test/java/org/stellar/sdk/SorobanDataBuilderTest.java diff --git a/src/main/java/org/stellar/sdk/SorobanDataBuilder.java b/src/main/java/org/stellar/sdk/SorobanDataBuilder.java new file mode 100644 index 000000000..23480f4ca --- /dev/null +++ b/src/main/java/org/stellar/sdk/SorobanDataBuilder.java @@ -0,0 +1,166 @@ +package org.stellar.sdk; + +import java.io.IOException; +import java.util.Collection; +import javax.annotation.Nullable; +import lombok.Builder; +import lombok.NonNull; +import lombok.Value; +import org.stellar.sdk.xdr.ExtensionPoint; +import org.stellar.sdk.xdr.Int64; +import org.stellar.sdk.xdr.LedgerFootprint; +import org.stellar.sdk.xdr.LedgerKey; +import org.stellar.sdk.xdr.SorobanResources; +import org.stellar.sdk.xdr.SorobanTransactionData; +import org.stellar.sdk.xdr.Uint32; +import org.stellar.sdk.xdr.XdrUnsignedInteger; + +/** + * Supports building {@link SorobanTransactionData} structures with various items set to specific + * values. + * + *

This is recommended for when you are building {@link BumpFootprintExpirationOperation} and + * {@link RestoreFootprintOperation} operations to avoid (re)building the entire data structure from + * scratch. + */ +public class SorobanDataBuilder { + private final SorobanTransactionData data; + + /** Creates a new builder with an empty {@link SorobanTransactionData}. */ + public SorobanDataBuilder() { + data = + new SorobanTransactionData.Builder() + .resources( + new SorobanResources.Builder() + .footprint( + new LedgerFootprint.Builder() + .readOnly(new LedgerKey[] {}) + .readWrite(new LedgerKey[] {}) + .build()) + .instructions(new Uint32(new XdrUnsignedInteger(0))) + .readBytes(new Uint32(new XdrUnsignedInteger(0))) + .writeBytes(new Uint32(new XdrUnsignedInteger(0))) + .extendedMetaDataSizeBytes(new Uint32(new XdrUnsignedInteger(0))) + .build()) + .refundableFee(new Int64(0L)) + .ext(new ExtensionPoint.Builder().discriminant(0).build()) + .build(); + } + + /** + * Creates a new builder from a base64 representation of {@link SorobanTransactionData}. + * + * @param sorobanData base64 representation of {@link SorobanTransactionData} + */ + public SorobanDataBuilder(String sorobanData) { + try { + data = SorobanTransactionData.fromXdrBase64(sorobanData); + } catch (IOException e) { + throw new IllegalArgumentException("Invalid SorobanData: " + sorobanData, e); + } + } + + /** + * Creates a new builder from a {@link SorobanTransactionData}. + * + * @param sorobanData {@link SorobanTransactionData}. + */ + public SorobanDataBuilder(SorobanTransactionData sorobanData) { + try { + data = SorobanTransactionData.fromXdrByteArray(sorobanData.toXdrByteArray()); + } catch (IOException e) { + throw new IllegalArgumentException("Invalid SorobanData: " + sorobanData, e); + } + } + + /** + * Sets the "refundable" fee portion of the Soroban data. + * + * @param fee the refundable fee to set (int64) + * @return this builder instance + */ + public SorobanDataBuilder setRefundableFee(long fee) { + data.setRefundableFee(new Int64(fee)); + return this; + } + + /** + * Sets up the resource metrics. + * + *

You should almost NEVER need this, as its often generated/provided to you by transaction + * simulation/preflight from a Soroban RPC server. + * + * @param resources the resource metrics to set + * @return this builder instance + */ + public SorobanDataBuilder setResources(Resources resources) { + data.getResources() + .setInstructions(new Uint32(new XdrUnsignedInteger(resources.getCpuInstructions()))); + data.getResources().setReadBytes(new Uint32(new XdrUnsignedInteger(resources.getReadBytes()))); + data.getResources() + .setWriteBytes(new Uint32(new XdrUnsignedInteger(resources.getWriteBytes()))); + data.getResources() + .setExtendedMetaDataSizeBytes( + new Uint32(new XdrUnsignedInteger(resources.getMetadataBytes()))); + return this; + } + + /** + * Sets the read-only portion of the storage access footprint to be a certain set of ledger keys. + * + *

Passing {@code null} will leave that portion of the footprint untouched. If you want to + * clear a portion of the footprint, pass an empty collection. + * + * @param readOnly the set of ledger keys to set in the read-only portion of the transaction's + * sorobanData + * @return this builder instance + */ + public SorobanDataBuilder setReadOnly(@Nullable Collection readOnly) { + if (readOnly != null) { + data.getResources().getFootprint().setReadOnly(readOnly.toArray(new LedgerKey[0])); + } + return this; + } + + /** + * Sets the read-write portion of the storage access footprint to be a certain set of ledger keys. + * + *

Passing {@code null} will leave that portion of the footprint untouched. If you want to + * clear a portion of the footprint, pass an empty collection. + * + * @param readWrite the set of ledger keys to set in the read-write portion of the transaction's + * sorobanData + * @return this builder instance + */ + public SorobanDataBuilder setReadWrite(@Nullable Collection readWrite) { + if (readWrite != null) { + data.getResources().getFootprint().setReadWrite(readWrite.toArray(new LedgerKey[0])); + } + return this; + } + + /** + * @return the copy of the final {@link SorobanTransactionData}. + */ + public SorobanTransactionData build() { + try { + return SorobanTransactionData.fromXdrByteArray(data.toXdrByteArray()); + } catch (IOException e) { + throw new IllegalArgumentException("Copy SorobanData failed, please report this bug.", e); + } + } + + /** Represents the resource metrics of the Soroban data. */ + @Builder(toBuilder = true) + @Value + public static class Resources { + // number of CPU instructions (uint32) + @NonNull Long cpuInstructions; + // number of bytes being read (uint32) + @NonNull Long readBytes; + // number of bytes being written (uint32) + @NonNull Long writeBytes; + // number of extended metadata bytes (uint32) + @NonNull Long metadataBytes; + } +} diff --git a/src/main/java/org/stellar/sdk/Transaction.java b/src/main/java/org/stellar/sdk/Transaction.java index 2bc6df2ad..316c88c93 100644 --- a/src/main/java/org/stellar/sdk/Transaction.java +++ b/src/main/java/org/stellar/sdk/Transaction.java @@ -58,7 +58,7 @@ public class Transaction extends AbstractTransaction { this.mPreconditions = preconditions; this.mFee = fee; this.mMemo = memo != null ? memo : Memo.none(); - this.mSorobanData = sorobanData; + this.mSorobanData = sorobanData != null ? new SorobanDataBuilder(sorobanData).build() : null; } // setEnvelopeType is only used in tests which is why this method is package protected diff --git a/src/main/java/org/stellar/sdk/TransactionBuilder.java b/src/main/java/org/stellar/sdk/TransactionBuilder.java index da85d14f5..c1b900697 100644 --- a/src/main/java/org/stellar/sdk/TransactionBuilder.java +++ b/src/main/java/org/stellar/sdk/TransactionBuilder.java @@ -5,7 +5,6 @@ import static org.stellar.sdk.TransactionPreconditions.TIMEOUT_INFINITE; import com.google.common.base.Function; -import java.io.IOException; import java.math.BigInteger; import java.util.Collection; import java.util.List; @@ -264,29 +263,36 @@ public static org.stellar.sdk.xdr.TimeBounds buildTimeBounds(long minTime, long } /** - * Sets Soroban data to the transaction. TODO: After adding SorobanServer, add more descriptions. + * Sets the transaction's internal Soroban transaction data (resources, footprint, etc.). + * + *

For non-contract(non-Soroban) transactions, this setting has no effect. In the case of + * Soroban transactions, this is either an instance of {@link SorobanTransactionData} or a + * base64-encoded string of said structure. This is usually obtained from the simulation response + * based on a transaction with a Soroban operation (e.g. {@link InvokeHostFunctionOperation}, + * providing necessary resource and storage footprint estimations for contract invocation. * * @param sorobanData Soroban data to set * @return Builder object so you can chain methods. */ public TransactionBuilder setSorobanData(SorobanTransactionData sorobanData) { - this.mSorobanData = sorobanData; + this.mSorobanData = new SorobanDataBuilder(sorobanData).build(); return this; } /** - * Sets Soroban data to the transaction. TODO: After adding SorobanServer, add more descriptions. + * Sets the transaction's internal Soroban transaction data (resources, footprint, etc.). + * + *

For non-contract(non-Soroban) transactions, this setting has no effect. In the case of + * Soroban transactions, this is either an instance of {@link SorobanTransactionData} or a + * base64-encoded string of said structure. This is usually obtained from the simulation response + * based on a transaction with a Soroban operation (e.g. {@link InvokeHostFunctionOperation}, + * providing necessary resource and storage footprint estimations for contract invocation. * * @param sorobanData Soroban data to set * @return Builder object so you can chain methods. */ public TransactionBuilder setSorobanData(String sorobanData) { - SorobanTransactionData data; - try { - data = SorobanTransactionData.fromXdrBase64(sorobanData); - } catch (IOException e) { - throw new IllegalArgumentException("Invalid Soroban data: " + sorobanData, e); - } - return setSorobanData(data); + this.mSorobanData = new SorobanDataBuilder(sorobanData).build(); + return this; } } diff --git a/src/test/java/org/stellar/sdk/SorobanDataBuilderTest.java b/src/test/java/org/stellar/sdk/SorobanDataBuilderTest.java new file mode 100644 index 000000000..f55a4ae74 --- /dev/null +++ b/src/test/java/org/stellar/sdk/SorobanDataBuilderTest.java @@ -0,0 +1,145 @@ +package org.stellar.sdk; + +import static com.google.common.collect.ImmutableList.of; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotSame; + +import java.io.IOException; +import java.util.ArrayList; +import org.junit.Test; +import org.stellar.sdk.xdr.ExtensionPoint; +import org.stellar.sdk.xdr.Int64; +import org.stellar.sdk.xdr.LedgerEntryType; +import org.stellar.sdk.xdr.LedgerFootprint; +import org.stellar.sdk.xdr.LedgerKey; +import org.stellar.sdk.xdr.SorobanResources; +import org.stellar.sdk.xdr.SorobanTransactionData; +import org.stellar.sdk.xdr.Uint32; +import org.stellar.sdk.xdr.XdrUnsignedInteger; + +public class SorobanDataBuilderTest { + LedgerKey readOnly = + new LedgerKey.Builder() + .discriminant(LedgerEntryType.ACCOUNT) + .account( + new LedgerKey.LedgerKeyAccount.Builder() + .accountID( + KeyPair.fromAccountId( + "GB7TAYRUZGE6TVT7NHP5SMIZRNQA6PLM423EYISAOAP3MKYIQMVYP2JO") + .getXdrAccountId()) + .build()) + .build(); + LedgerKey readWrite = + new LedgerKey.Builder() + .discriminant(LedgerEntryType.ACCOUNT) + .account( + new LedgerKey.LedgerKeyAccount.Builder() + .accountID( + KeyPair.fromAccountId( + "GAHJJJKMOKYE4RVPZEWZTKH5FVI4PA3VL7GK2LFNUBSGBV6OJP7TQSLX") + .getXdrAccountId()) + .build()) + .build(); + + SorobanTransactionData emptySorobanData = + new SorobanTransactionData.Builder() + .resources( + new SorobanResources.Builder() + .footprint( + new LedgerFootprint.Builder() + .readOnly(new LedgerKey[] {}) + .readWrite(new LedgerKey[] {}) + .build()) + .instructions(new Uint32(new XdrUnsignedInteger(0))) + .readBytes(new Uint32(new XdrUnsignedInteger(0))) + .writeBytes(new Uint32(new XdrUnsignedInteger(0))) + .extendedMetaDataSizeBytes(new Uint32(new XdrUnsignedInteger(0))) + .build()) + .refundableFee(new Int64(0L)) + .ext(new ExtensionPoint.Builder().discriminant(0).build()) + .build(); + + SorobanTransactionData presetSorobanData = + new SorobanTransactionData.Builder() + .resources( + new SorobanResources.Builder() + .footprint( + new LedgerFootprint.Builder() + .readOnly(new LedgerKey[] {readOnly}) + .readWrite(new LedgerKey[] {readWrite}) + .build()) + .instructions(new Uint32(new XdrUnsignedInteger(1))) + .readBytes(new Uint32(new XdrUnsignedInteger(2))) + .writeBytes(new Uint32(new XdrUnsignedInteger(3))) + .extendedMetaDataSizeBytes(new Uint32(new XdrUnsignedInteger(4))) + .build()) + .refundableFee(new Int64(5L)) + .ext(new ExtensionPoint.Builder().discriminant(0).build()) + .build(); + + @Test + public void testConstructorFromEmpty() { + SorobanTransactionData actualData = new SorobanDataBuilder().build(); + assertEquals(emptySorobanData, actualData); + } + + @Test + public void testConstructorFromBase64() throws IOException { + String base64 = presetSorobanData.toXdrBase64(); + SorobanTransactionData actualData = new SorobanDataBuilder(base64).build(); + assertEquals(presetSorobanData, actualData); + } + + @Test + public void testConstructorFromSorobanTransactionData() { + SorobanTransactionData actualData = new SorobanDataBuilder(presetSorobanData).build(); + assertEquals(presetSorobanData, actualData); + } + + @Test + public void testSetProperties() { + SorobanTransactionData actualData = + new SorobanDataBuilder() + .setReadOnly(of(readOnly)) + .setReadWrite(of(readWrite)) + .setRefundableFee(5) + .setResources( + new SorobanDataBuilder.Resources.ResourcesBuilder() + .cpuInstructions(1L) + .readBytes(2L) + .writeBytes(3L) + .metadataBytes(4L) + .build()) + .build(); + assertEquals(presetSorobanData, actualData); + } + + @Test + public void testLeavesUntouchedFootprintsUntouched() { + SorobanTransactionData data0 = + new SorobanDataBuilder(presetSorobanData).setReadOnly(null).build(); + assertArrayEquals( + new LedgerKey[] {readOnly}, data0.getResources().getFootprint().getReadOnly()); + + SorobanTransactionData data1 = + new SorobanDataBuilder(presetSorobanData).setReadOnly(new ArrayList<>()).build(); + assertArrayEquals(new LedgerKey[] {}, data1.getResources().getFootprint().getReadOnly()); + + SorobanTransactionData data3 = + new SorobanDataBuilder(presetSorobanData).setReadWrite(null).build(); + assertArrayEquals( + new LedgerKey[] {readWrite}, data3.getResources().getFootprint().getReadWrite()); + + SorobanTransactionData data4 = + new SorobanDataBuilder(presetSorobanData).setReadWrite(new ArrayList<>()).build(); + assertArrayEquals(new LedgerKey[] {}, data4.getResources().getFootprint().getReadWrite()); + } + + @Test + public void testBuildCopy() { + SorobanTransactionData actualData = new SorobanDataBuilder(presetSorobanData).build(); + assertEquals(presetSorobanData, actualData); + assertNotSame(presetSorobanData, actualData); + } +} diff --git a/src/test/java/org/stellar/sdk/SorobanServerTest.java b/src/test/java/org/stellar/sdk/SorobanServerTest.java index c8671d791..572c1f68a 100644 --- a/src/test/java/org/stellar/sdk/SorobanServerTest.java +++ b/src/test/java/org/stellar/sdk/SorobanServerTest.java @@ -1353,35 +1353,40 @@ private Transaction buildSorobanTransaction( auth = new ArrayList<>(); } - return new TransactionBuilder(AccountConverter.enableMuxed(), source, Network.STANDALONE) - .setBaseFee(50000) - .addPreconditions( - TransactionPreconditions.builder().timeBounds(new TimeBounds(0, 0)).build()) - .addOperation( - InvokeHostFunctionOperation.builder() - .sourceAccount(opInvokerKp.getAccountId()) - .hostFunction( - new HostFunction.Builder() - .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_INVOKE_CONTRACT) - .invokeContract( - new SCVec( - new SCVal[] { - new Address(contractId).toSCVal(), - new SCVal.Builder() - .discriminant(SCValType.SCV_SYMBOL) - .sym(new SCSymbol(new XdrString("increment"))) - .build(), - new Address(opInvokerKp.getAccountId()).toSCVal(), - new SCVal.Builder() - .discriminant(SCValType.SCV_U32) - .u32(new Uint32(new XdrUnsignedInteger(10))) - .build() - })) - .build()) - .auth(auth) - .build()) - .setSorobanData(sorobanData) - .build(); + TransactionBuilder transactionBuilder = + new TransactionBuilder(AccountConverter.enableMuxed(), source, Network.STANDALONE) + .setBaseFee(50000) + .addPreconditions( + TransactionPreconditions.builder().timeBounds(new TimeBounds(0, 0)).build()) + .addOperation( + InvokeHostFunctionOperation.builder() + .sourceAccount(opInvokerKp.getAccountId()) + .hostFunction( + new HostFunction.Builder() + .discriminant(HostFunctionType.HOST_FUNCTION_TYPE_INVOKE_CONTRACT) + .invokeContract( + new SCVec( + new SCVal[] { + new Address(contractId).toSCVal(), + new SCVal.Builder() + .discriminant(SCValType.SCV_SYMBOL) + .sym(new SCSymbol(new XdrString("increment"))) + .build(), + new Address(opInvokerKp.getAccountId()).toSCVal(), + new SCVal.Builder() + .discriminant(SCValType.SCV_U32) + .u32(new Uint32(new XdrUnsignedInteger(10))) + .build() + })) + .build()) + .auth(auth) + .build()); + + if (sorobanData != null) { + transactionBuilder.setSorobanData(sorobanData); + } + + return transactionBuilder.build(); } private static SorobanAuthorizationEntry sorobanAuthorizationEntryFromXdrBase64( From 712f0711239370a21d5d96bd6d7396e8d65f1c4e Mon Sep 17 00:00:00 2001 From: overcat <4catcode@gmail.com> Date: Mon, 14 Aug 2023 23:45:06 +0800 Subject: [PATCH 12/29] Bump version. --- CHANGELOG.md | 21 +++++++++++++++++++++ build.gradle | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index acec00728..e176af5ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,27 @@ As this project is pre 1.0, breaking changes may happen for minor version bumps. ## Pending +## 0.41.0-beta.0 +* Add support for Soroban Preview 10. ([#490](https://github.com/stellar/java-stellar-sdk/issues/490)) +* Correct the data type of certain fields to store the expected design values. ([#497](https://github.com/stellar/java-stellar-sdk/pull/497)) +* Add source account comparison to `ClawbackClaimableBalanceOperation`, `LiquidityPoolWithdrawOperation`, and `LiquidityPoolDepositOperation` for equality check. ([#484](https://github.com/stellar/java-stellar-sdk/pull/484)) +* Add basic implementation of `liquidity_pools?account` ([#426](https://github.com/stellar/java-stellar-sdk/pull/426)) + +### Breaking changes +* `Utils.claimableBalanceIdToXDR` and `Utils.xdrToClaimableBalanceId` have been removed. ([#503](https://github.com/stellar/java-stellar-sdk/pull/503)) +* The types of the following fields have changed. ([#498](https://github.com/stellar/java-stellar-sdk/pull/498)) + | field | before | now | + | ----------------------------------------- | ------ | ---------- | + | LedgerBounds.minLedger | int | long | + | LedgerBounds.maxLedger | int | long | + | MemoId.id | long | BigInteger | + | TimeBounds.minTime | long | BigInteger | + | TimeBounds.maxTime | long | BigInteger | + | TransactionBuilder.baseFee | int | long | + | TransactionPreconditions.TIMEOUT_INFINITE | long | BigInteger | + | TransactionPreconditions.minSeqAge | Long | BigInteger | + | TransactionPreconditions.minSeqLedgerGap | int | long | + ## 0.40.0 * Add strkey support for contract ids ([#471](https://github.com/stellar/java-stellar-sdk/pull/471)) * Fix NPE in `KeyPair.equals()` method ([#474](https://github.com/stellar/java-stellar-sdk/pull/474)) diff --git a/build.gradle b/build.gradle index a8455fde2..b52c646e7 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ spotless { sourceCompatibility = JavaVersion.VERSION_1_8.toString() -version = '0.40.0' +version = '0.41.0-beta.0' group = 'stellar' jar.enabled = false From 8be63cd8e9b6bbdf3b936132090e3b7b7412e39d Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Wed, 16 Aug 2023 23:35:52 +0800 Subject: [PATCH 13/29] Use JDK 11 for CI builds & Bump version. (#511) --- CHANGELOG.md | 3 +++ build.gradle | 2 +- jitpack.yml | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 jitpack.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index e176af5ed..f6984dc57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ As this project is pre 1.0, breaking changes may happen for minor version bumps. ## Pending +## 0.41.0-beta.1 +* Use JDK 11 for CI builds. ([#511](https://github.com/stellar/java-stellar-sdk/issues/511)) + ## 0.41.0-beta.0 * Add support for Soroban Preview 10. ([#490](https://github.com/stellar/java-stellar-sdk/issues/490)) * Correct the data type of certain fields to store the expected design values. ([#497](https://github.com/stellar/java-stellar-sdk/pull/497)) diff --git a/build.gradle b/build.gradle index b52c646e7..6c700d0f0 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ spotless { sourceCompatibility = JavaVersion.VERSION_1_8.toString() -version = '0.41.0-beta.0' +version = '0.41.0-beta.1' group = 'stellar' jar.enabled = false diff --git a/jitpack.yml b/jitpack.yml new file mode 100644 index 000000000..f81efc783 --- /dev/null +++ b/jitpack.yml @@ -0,0 +1,7 @@ +jdk: + - openjdk11 + +before_install: + - sdk install java 11.0.23-open + - sdk use java 11.0.23-open + From ea4e12c31bb0104364b09bcc290dfc0585792ba2 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Mon, 21 Aug 2023 16:33:37 +0800 Subject: [PATCH 14/29] Migrate to GitHub Actions. (#512) --- .circleci/config.yml | 73 ------------- .github/workflows/test-deploy.yml | 100 ++++++++++++++++++ after_deploy.sh | 16 --- build.gradle | 12 +++ src/main/java/org/stellar/sdk/KeyPair.java | 4 +- .../java/org/stellar/sdk/LedgerBounds.java | 2 +- .../org/stellar/sdk/SignedPayloadSigner.java | 7 +- .../java/org/stellar/sdk/SorobanServer.java | 2 +- .../org/stellar/sdk/TransactionBuilder.java | 2 +- .../stellar/sdk/TransactionPreconditions.java | 2 +- .../sdk/requests/AccountsRequestBuilder.java | 4 +- .../sorobanrpc/SorobanRpcErrorResponse.java | 2 +- .../sorobanrpc/SorobanRpcRequest.java | 2 +- .../sdk/responses/TransactionResponse.java | 2 +- .../sorobanrpc/SorobanRpcResponse.java | 2 +- 15 files changed, 128 insertions(+), 104 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .github/workflows/test-deploy.yml delete mode 100755 after_deploy.sh diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 5ae388ee2..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,73 +0,0 @@ -version: 2.1 - -jobs: - test: - docker: - - image: circleci/openjdk:11 - steps: - - checkout - - run: ./gradlew check - shadow_jar: - docker: - - image: circleci/openjdk:11 - steps: - - checkout - - run: ./gradlew shadowJar - - persist_to_workspace: - root: build - paths: - - libs/stellar-sdk.jar - deploy: - docker: - - image: cimg/go:1.17 - steps: - - attach_workspace: - at: ./build - - run: - name: "Install github.com/github-release/github-release v0.10.0" - command: | - go get github.com/github-release/github-release@v0.10.0 - - run: - name: "Upload JAR to GitHub Release" - command: | - github-release upload -s ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -t ${CIRCLE_TAG} -f ./build/libs/stellar-sdk.jar -n java-stellar-sdk.jar - - after_deploy: - docker: - - image: circleci/openjdk:11 - steps: - - checkout - - run: ./after_deploy.sh - -workflows: - version: 2 - test-and-deploy: - jobs: - - test: - filters: # required since `deploy` has tag filters AND requires `build` - tags: - only: /.*/ - - shadow_jar: - requires: - - test - filters: - tags: - only: /.*/ - branches: - ignore: /.*/ - - deploy: - requires: - - shadow_jar - filters: - tags: - only: /.*/ - branches: - ignore: /.*/ - - after_deploy: - requires: - - deploy - filters: - tags: - only: /.*/ - branches: - ignore: /.*/ diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml new file mode 100644 index 000000000..094cca8e9 --- /dev/null +++ b/.github/workflows/test-deploy.yml @@ -0,0 +1,100 @@ +name: "Test and Deploy" + +on: + push: + branches: + - master + - soroban + pull_request: + release: + types: + - created + +env: + JAVA_VERSION: '11' + JAVA_DISTRIBUTION: 'microsoft' + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Set up JDK + uses: actions/setup-java@v2 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_DISTRIBUTION }} + - name: Test + run: ./gradlew check + + shadow_jar: + needs: test + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Set up JDK + uses: actions/setup-java@v2 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_DISTRIBUTION }} + - name: Build JAR + run: ./gradlew shadowJar + - name: Persist JAR Artifact + uses: actions/upload-artifact@v3 + with: + name: jar + path: build/libs/stellar-sdk.jar + + javadoc: + needs: test + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Set up JDK + uses: actions/setup-java@v2 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_DISTRIBUTION }} + - name: Generate Documentation + run: ./gradlew javadoc + - name: Persist Documentation + uses: actions/upload-artifact@v3 + with: + name: javadoc + path: javadoc + + deploy: + needs: [ shadow_jar, javadoc ] + permissions: + contents: write + if: github.event_name == 'release' && github.event.action == 'created' + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Download JAR Artifact + uses: actions/download-artifact@v2 + with: + name: jar + path: jar + - name: Download Java Documentation + uses: actions/download-artifact@v2 + with: + name: javadoc + path: javadoc + - name: Archive Documentation + run: tar -czf stellar-sdk-javadoc.tar.gz javadoc + - name: Upload artifacts to GitHub Release + uses: softprops/action-gh-release@v1 + with: + files: | + jar/stellar-sdk.jar + stellar-sdk-javadoc.tar.gz + - name: Upload Documentation to GitHub Pages + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: javadoc + diff --git a/after_deploy.sh b/after_deploy.sh deleted file mode 100755 index 4df2347b8..000000000 --- a/after_deploy.sh +++ /dev/null @@ -1,16 +0,0 @@ -echo "machine github.com login stellar-jenkins password $GITHUB_TOKEN" >~/.netrc -git clone -b gh-pages "https://stellar-jenkins@github.com/stellar/java-stellar-sdk.git" javadoc - -if [ ! -d "javadoc" ]; then - echo "Error cloning" - exit 1 -fi - -rm -rf javadoc/* # Remove all files without hidden (.git) -javadoc -public -splitindex -windowtitle "java-stellar-sdk documentation" -d ./javadoc -sourcepath ./src/main/java/ -subpackages org.stellar.sdk -exclude org.stellar.sdk.xdr -cd javadoc -git config user.name "post-release-script" -git config user.email "post-release-script@stellar.org" -git add . -git commit -m $CIRCLE_TAG -git push origin gh-pages diff --git a/build.gradle b/build.gradle index 6c700d0f0..7a6ba7ef8 100644 --- a/build.gradle +++ b/build.gradle @@ -102,4 +102,16 @@ tasks.register('updateGitHook', Copy) { rename { fileName -> fileName.endsWith('.sh') ? fileName[0..-4] : fileName } +} + +tasks.javadoc { + destinationDir = file('javadoc') + failOnError = true + exclude("org/stellar/sdk/xdr/**") + // cast options to StandardJavadocDocletOptions + // https://docs.gradle.org/current/javadoc/org/gradle/external/javadoc/StandardJavadocDocletOptions.html + StandardJavadocDocletOptions options = options as StandardJavadocDocletOptions + options.setSplitIndex(true) + options.setMemberLevel(JavadocMemberLevel.PUBLIC) + options.setEncoding('UTF-8') } \ No newline at end of file diff --git a/src/main/java/org/stellar/sdk/KeyPair.java b/src/main/java/org/stellar/sdk/KeyPair.java index 9787b5fe0..55533db5a 100644 --- a/src/main/java/org/stellar/sdk/KeyPair.java +++ b/src/main/java/org/stellar/sdk/KeyPair.java @@ -266,8 +266,8 @@ public DecoratedSignature signDecorated(byte[] data) { /** * Sign the provided payload data for payload signer where the input is the data being signed. Per * the {@link DecoratedSignature}. + * href="https://github.com/stellar/stellar-protocol/blob/master/core/cap-0040.md#signature-hint">CAP-40 + * Signature spec {@link DecoratedSignature}. * * @param signerPayload the payload signers raw data to sign * @return DecoratedSignature diff --git a/src/main/java/org/stellar/sdk/LedgerBounds.java b/src/main/java/org/stellar/sdk/LedgerBounds.java index 37c75ac15..057cb78a2 100644 --- a/src/main/java/org/stellar/sdk/LedgerBounds.java +++ b/src/main/java/org/stellar/sdk/LedgerBounds.java @@ -8,7 +8,7 @@ @lombok.Builder /** * LedgerBounds are Preconditions of a transaction per CAP-21 + * href="https://github.com/stellar/stellar-protocol/blob/master/core/cap-0021.md#specification">CAP-21 */ public class LedgerBounds { long minLedger; diff --git a/src/main/java/org/stellar/sdk/SignedPayloadSigner.java b/src/main/java/org/stellar/sdk/SignedPayloadSigner.java index 3b1d381bb..0eb30b16b 100644 --- a/src/main/java/org/stellar/sdk/SignedPayloadSigner.java +++ b/src/main/java/org/stellar/sdk/SignedPayloadSigner.java @@ -9,8 +9,8 @@ /** * Data model for the signed - * payload signer + * href="https://github.com/stellar/stellar-protocol/blob/master/core/cap-0040.md#xdr-changes" + * target="_blank">signed payload signer */ public class SignedPayloadSigner { public static final int SIGNED_PAYLOAD_MAX_PAYLOAD_LENGTH = 64; @@ -72,7 +72,8 @@ public AccountID getSignerAccountId() { * get the payload that signatures are produced from. * * @see + * href="https://github.com/stellar/stellar-protocol/blob/master/core/cap-0040.md#semantics">CAP-0040 + * Semantics * @return */ public byte[] getPayload() { diff --git a/src/main/java/org/stellar/sdk/SorobanServer.java b/src/main/java/org/stellar/sdk/SorobanServer.java index ff7f29aac..b038ab437 100644 --- a/src/main/java/org/stellar/sdk/SorobanServer.java +++ b/src/main/java/org/stellar/sdk/SorobanServer.java @@ -340,7 +340,7 @@ public SimulateTransactionResponse simulateTransaction(Transaction transaction) * Submit a trial contract invocation, first run a simulation of the contract invocation as * defined on the incoming transaction, and apply the results to a new copy of the transaction * which is then returned. Setting the ledger footprint and authorization, so the resulting - * transaction is ready for signing & sending. + * transaction is ready for signing and sending. * *

The returned transaction will also have an updated fee that is the sum of fee set on * incoming transaction with the contract resource fees estimated from simulation. It is advisable diff --git a/src/main/java/org/stellar/sdk/TransactionBuilder.java b/src/main/java/org/stellar/sdk/TransactionBuilder.java index c1b900697..44dcb4794 100644 --- a/src/main/java/org/stellar/sdk/TransactionBuilder.java +++ b/src/main/java/org/stellar/sdk/TransactionBuilder.java @@ -89,7 +89,7 @@ public TransactionBuilder addOperations(Collection operations) { /** * Adds preconditions. For details of all preconditions on transaction refer to CAP-21 + * href="https://github.com/stellar/stellar-protocol/blob/master/core/cap-0021.md#specification">CAP-21 * * @param preconditions the tx PreConditions * @return updated Builder object diff --git a/src/main/java/org/stellar/sdk/TransactionPreconditions.java b/src/main/java/org/stellar/sdk/TransactionPreconditions.java index e25b7ab4e..c1edfb463 100644 --- a/src/main/java/org/stellar/sdk/TransactionPreconditions.java +++ b/src/main/java/org/stellar/sdk/TransactionPreconditions.java @@ -23,7 +23,7 @@ @Builder(toBuilder = true) /** * Preconditions of a transaction per CAP-21 + * href="https://github.com/stellar/stellar-protocol/blob/master/core/cap-0021.md#specification">CAP-21 */ public class TransactionPreconditions { public static final long MAX_EXTRA_SIGNERS_COUNT = 2; diff --git a/src/main/java/org/stellar/sdk/requests/AccountsRequestBuilder.java b/src/main/java/org/stellar/sdk/requests/AccountsRequestBuilder.java index b8cc9b996..161fcdc56 100644 --- a/src/main/java/org/stellar/sdk/requests/AccountsRequestBuilder.java +++ b/src/main/java/org/stellar/sdk/requests/AccountsRequestBuilder.java @@ -96,7 +96,7 @@ public AccountsRequestBuilder forAsset(AssetTypeCreditAlphaNum asset) { /** * Returns all accounts who have trustlines to the specified liquidity pool. * - * @param Liquidity Pool ID + * @param liquidityPoolID Liquidity Pool ID * @return current {@link AccountsRequestBuilder} instance * @see Accounts */ @@ -107,7 +107,7 @@ public AccountsRequestBuilder forLiquidityPool(LiquidityPoolID liquidityPoolID) /** * Returns all accounts who have trustlines to the specified liquidity pool. * - * @param Liquidity Pool ID + * @param liquidityPoolID Liquidity Pool ID * @return current {@link AccountsRequestBuilder} instance * @see Accounts */ diff --git a/src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcErrorResponse.java b/src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcErrorResponse.java index 9ad3c7248..556144589 100644 --- a/src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcErrorResponse.java +++ b/src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcErrorResponse.java @@ -6,7 +6,7 @@ * Throws when Soroban-RPC instance responds with error. * * @see JSON-RPC 2.0 - * Specification - Error object + * Specification - Error object */ @Getter public class SorobanRpcErrorResponse extends Exception { diff --git a/src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcRequest.java b/src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcRequest.java index d3aa2e508..57be9ff3f 100644 --- a/src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcRequest.java +++ b/src/main/java/org/stellar/sdk/requests/sorobanrpc/SorobanRpcRequest.java @@ -8,7 +8,7 @@ * Represent the request sent to Soroban-RPC. * * @see JSON-RPC 2.0 - * Specification - Request object + * Specification - Request object */ @RequiredArgsConstructor @Value diff --git a/src/main/java/org/stellar/sdk/responses/TransactionResponse.java b/src/main/java/org/stellar/sdk/responses/TransactionResponse.java index add9dcaad..a3912c4fb 100644 --- a/src/main/java/org/stellar/sdk/responses/TransactionResponse.java +++ b/src/main/java/org/stellar/sdk/responses/TransactionResponse.java @@ -197,7 +197,7 @@ public Links getLinks() { /** * Preconditions of a transaction per CAP-21 + * href="https://github.com/stellar/stellar-protocol/blob/master/core/cap-0021.md#specification">CAP-21 */ @Value public static class Preconditions { diff --git a/src/main/java/org/stellar/sdk/responses/sorobanrpc/SorobanRpcResponse.java b/src/main/java/org/stellar/sdk/responses/sorobanrpc/SorobanRpcResponse.java index f0f46bb09..26ec6dd90 100644 --- a/src/main/java/org/stellar/sdk/responses/sorobanrpc/SorobanRpcResponse.java +++ b/src/main/java/org/stellar/sdk/responses/sorobanrpc/SorobanRpcResponse.java @@ -10,7 +10,7 @@ * Represent the response returned by Soroban-RPC. * * @see JSON-RPC 2.0 - * Specification - Response object + * Specification - Response object */ @AllArgsConstructor @Getter From bb681092a3183066202cdac4fe94ab315ac29c78 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Mon, 21 Aug 2023 16:34:17 +0800 Subject: [PATCH 15/29] Bump version. (#513) --- CHANGELOG.md | 3 +++ build.gradle | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6984dc57..702c3eb7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ As this project is pre 1.0, breaking changes may happen for minor version bumps. ## Pending +## 0.41.0-beta.2 +* Migrate from CircleCI to GitHub Actions. ([#512](https://github.com/stellar/java-stellar-sdk/pull/512)) + ## 0.41.0-beta.1 * Use JDK 11 for CI builds. ([#511](https://github.com/stellar/java-stellar-sdk/issues/511)) diff --git a/build.gradle b/build.gradle index 7a6ba7ef8..02eaede5f 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ spotless { sourceCompatibility = JavaVersion.VERSION_1_8.toString() -version = '0.41.0-beta.1' +version = '0.41.0-beta.2' group = 'stellar' jar.enabled = false From d6379e961557ac3d86609c26141d2c0dad376ac3 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Thu, 24 Aug 2023 07:16:15 +0800 Subject: [PATCH 16/29] Add tests to verify if the SDK can be successfully integrated into an Android project. (#514) --- .github/workflows/test-deploy.yml | 33 +++- android_test/.gitignore | 15 ++ android_test/README.md | 4 + android_test/app/.gitignore | 1 + android_test/app/build.gradle.kts | 71 +++++++ android_test/app/libs/README.md | 1 + android_test/app/proguard-rules.pro | 21 ++ .../MainInstrumentedTest.kt | 62 ++++++ android_test/app/src/main/AndroidManifest.xml | 28 +++ .../javastellarsdkdemoapp/MainActivity.kt | 119 +++++++++++ .../javastellarsdkdemoapp/ui/theme/Color.kt | 11 ++ .../javastellarsdkdemoapp/ui/theme/Theme.kt | 70 +++++++ .../javastellarsdkdemoapp/ui/theme/Type.kt | 34 ++++ .../res/drawable/ic_launcher_background.xml | 170 ++++++++++++++++ .../res/drawable/ic_launcher_foreground.xml | 30 +++ .../main/res/mipmap-anydpi/ic_launcher.xml | 6 + .../res/mipmap-anydpi/ic_launcher_round.xml | 6 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes .../app/src/main/res/values/colors.xml | 10 + .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/themes.xml | 5 + .../app/src/main/res/xml/backup_rules.xml | 13 ++ .../main/res/xml/data_extraction_rules.xml | 19 ++ .../javastellarsdkdemoapp/ExampleUnitTest.kt | 17 ++ android_test/build.gradle.kts | 5 + android_test/gradle.properties | 23 +++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + android_test/gradlew | 185 ++++++++++++++++++ android_test/gradlew.bat | 89 +++++++++ android_test/settings.gradle.kts | 18 ++ 40 files changed, 1074 insertions(+), 1 deletion(-) create mode 100644 android_test/.gitignore create mode 100644 android_test/README.md create mode 100644 android_test/app/.gitignore create mode 100644 android_test/app/build.gradle.kts create mode 100644 android_test/app/libs/README.md create mode 100644 android_test/app/proguard-rules.pro create mode 100644 android_test/app/src/androidTest/java/org/stellar/javastellarsdkdemoapp/MainInstrumentedTest.kt create mode 100644 android_test/app/src/main/AndroidManifest.xml create mode 100644 android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/MainActivity.kt create mode 100644 android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/ui/theme/Color.kt create mode 100644 android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/ui/theme/Theme.kt create mode 100644 android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/ui/theme/Type.kt create mode 100644 android_test/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 android_test/app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 android_test/app/src/main/res/mipmap-anydpi/ic_launcher.xml create mode 100644 android_test/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml create mode 100644 android_test/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 android_test/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 android_test/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 android_test/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 android_test/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 android_test/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 android_test/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 android_test/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 android_test/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 android_test/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 android_test/app/src/main/res/values/colors.xml create mode 100644 android_test/app/src/main/res/values/strings.xml create mode 100644 android_test/app/src/main/res/values/themes.xml create mode 100644 android_test/app/src/main/res/xml/backup_rules.xml create mode 100644 android_test/app/src/main/res/xml/data_extraction_rules.xml create mode 100644 android_test/app/src/test/java/org/stellar/javastellarsdkdemoapp/ExampleUnitTest.kt create mode 100644 android_test/build.gradle.kts create mode 100644 android_test/gradle.properties create mode 100644 android_test/gradle/wrapper/gradle-wrapper.jar create mode 100644 android_test/gradle/wrapper/gradle-wrapper.properties create mode 100755 android_test/gradlew create mode 100644 android_test/gradlew.bat create mode 100644 android_test/settings.gradle.kts diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml index 094cca8e9..95bbf1589 100644 --- a/.github/workflows/test-deploy.yml +++ b/.github/workflows/test-deploy.yml @@ -66,8 +66,39 @@ jobs: name: javadoc path: javadoc + android-test: + needs: shadow_jar + runs-on: macos-latest + name: android-test (api ${{ matrix.api-level }}) + strategy: + fail-fast: false + matrix: + # minSdk and targetSdk, see ${project_root}/android_test/app/build.gradle.kts + api-level: [ 26, 33 ] + steps: + - name: checkout + uses: actions/checkout@v3 + - name: Download JAR Artifact + uses: actions/download-artifact@v2 + with: + name: jar + path: android_test/app/libs/ + - uses: actions/setup-java@v3 + with: + java-version: 17 # TODO: Android Gradle plugin requires Java 11, consider replacing other parts with Java 17. + distribution: ${{ env.JAVA_DISTRIBUTION }} + - name: run tests + uses: reactivecircus/android-emulator-runner@v2 + with: + working-directory: ./android_test + api-level: ${{ matrix.api-level }} + script: ./gradlew connectedCheck + target: google_apis + arch: x86_64 + profile: 'pixel_2' + deploy: - needs: [ shadow_jar, javadoc ] + needs: [ javadoc, android-test ] permissions: contents: write if: github.event_name == 'release' && github.event.action == 'created' diff --git a/android_test/.gitignore b/android_test/.gitignore new file mode 100644 index 000000000..aa724b770 --- /dev/null +++ b/android_test/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/android_test/README.md b/android_test/README.md new file mode 100644 index 000000000..fa6194375 --- /dev/null +++ b/android_test/README.md @@ -0,0 +1,4 @@ +# Android Test +This folder contains a simple project for testing whether stellar-sdk can be successfully integrated into an Android project. + +This project is based on a template project created using Android Studio, and I have tried my best not to make any excessive modifications. \ No newline at end of file diff --git a/android_test/app/.gitignore b/android_test/app/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/android_test/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/android_test/app/build.gradle.kts b/android_test/app/build.gradle.kts new file mode 100644 index 000000000..e8ee153b8 --- /dev/null +++ b/android_test/app/build.gradle.kts @@ -0,0 +1,71 @@ +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.android") +} + +android { + namespace = "org.stellar.javastellarsdkdemoapp" + compileSdk = 33 + + defaultConfig { + applicationId = "org.stellar.javastellarsdkdemoapp" + minSdk = 26 + targetSdk = 33 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables { + useSupportLibrary = true + } + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = "1.8" + } + buildFeatures { + compose = true + } + composeOptions { + kotlinCompilerExtensionVersion = "1.4.3" + } + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } +} + +dependencies { + + implementation("androidx.core:core-ktx:1.9.0") + implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1") + implementation("androidx.activity:activity-compose:1.7.2") + implementation(platform("androidx.compose:compose-bom:2023.03.00")) + implementation("androidx.compose.ui:ui") + implementation("androidx.compose.ui:ui-graphics") + implementation("androidx.compose.ui:ui-tooling-preview") + implementation("androidx.compose.material3:material3") + implementation(files("libs/stellar-sdk.jar")) + testImplementation("junit:junit:4.13.2") + androidTestImplementation("androidx.test.uiautomator:uiautomator:2.3.0-alpha03") + androidTestImplementation("androidx.test.ext:junit:1.1.5") + androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") + androidTestImplementation(platform("androidx.compose:compose-bom:2023.03.00")) + androidTestImplementation("androidx.compose.ui:ui-test-junit4") + debugImplementation("androidx.compose.ui:ui-tooling") + debugImplementation("androidx.compose.ui:ui-test-manifest") +} \ No newline at end of file diff --git a/android_test/app/libs/README.md b/android_test/app/libs/README.md new file mode 100644 index 000000000..fb24dd7e4 --- /dev/null +++ b/android_test/app/libs/README.md @@ -0,0 +1 @@ +You need to place stellar-sdk.jar into this folder. \ No newline at end of file diff --git a/android_test/app/proguard-rules.pro b/android_test/app/proguard-rules.pro new file mode 100644 index 000000000..481bb4348 --- /dev/null +++ b/android_test/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/android_test/app/src/androidTest/java/org/stellar/javastellarsdkdemoapp/MainInstrumentedTest.kt b/android_test/app/src/androidTest/java/org/stellar/javastellarsdkdemoapp/MainInstrumentedTest.kt new file mode 100644 index 000000000..9c538f291 --- /dev/null +++ b/android_test/app/src/androidTest/java/org/stellar/javastellarsdkdemoapp/MainInstrumentedTest.kt @@ -0,0 +1,62 @@ +package org.stellar.javastellarsdkdemoapp + +import android.content.Intent +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.uiautomator.By +import androidx.test.uiautomator.UiDevice +import androidx.test.uiautomator.Until +import org.junit.Assert.* +import org.junit.Test +import org.junit.runner.RunWith + +private const val ONE_MINUTE = 1000L * 60 +private const val PACKAGE = "org.stellar.javastellarsdkdemoapp" + +/** + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class MainInstrumentedTest { + @Test + fun testGetNetwork() { + val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) + // open app + device.pressHome() + val launcherPackage: String = device.launcherPackageName + assertNotNull(launcherPackage) + device.wait( + Until.hasObject(By.pkg(launcherPackage).depth(0)), + ONE_MINUTE + ) + val context = InstrumentationRegistry.getInstrumentation().context + val intent = + context.packageManager.getLaunchIntentForPackage(PACKAGE) + intent?.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) + context.startActivity(intent) + // wait for app to appear + device.wait( + Until.hasObject(By.pkg(PACKAGE).depth(0)), + ONE_MINUTE + ) + + // get text + val textNoNetworkInfo = device.wait( + Until.findObject(By.text("No network info")), + ONE_MINUTE + ) + assertNotNull(textNoNetworkInfo) + + // get button + val button = device.wait( + Until.findObject(By.text("Get Network")), + ONE_MINUTE + ) + assertNotNull(button) + + // click button and wait text to appear + button.click() + + assertTrue(device.wait(Until.hasObject(By.text("public")), ONE_MINUTE * 5)) + } +} \ No newline at end of file diff --git a/android_test/app/src/main/AndroidManifest.xml b/android_test/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..9fd8d46b2 --- /dev/null +++ b/android_test/app/src/main/AndroidManifest.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/MainActivity.kt b/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/MainActivity.kt new file mode 100644 index 000000000..a7b0f7fab --- /dev/null +++ b/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/MainActivity.kt @@ -0,0 +1,119 @@ +package org.stellar.javastellarsdkdemoapp + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import org.stellar.javastellarsdkdemoapp.ui.theme.JavaStellarSDKDemoAppTheme +import org.stellar.sdk.Server + +private const val HORIZON_SERVER = "https://horizon.stellar.org/" +private const val PUBLIC = "Public Global Stellar Network ; September 2015" +private const val TESTNET = "Test SDF Network ; September 2015" + +class MainActivity : ComponentActivity() { + private lateinit var networkViewModel: NetworkViewModel + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + networkViewModel = ViewModelProvider(this).get(NetworkViewModel::class.java) + + setContent { + JavaStellarSDKDemoAppTheme { + Surface( + modifier = Modifier.fillMaxSize(), + color = MaterialTheme.colorScheme.background + ) { + Main(networkViewModel) + } + } + } + } +} + +class NetworkViewModel : ViewModel() { + private val _network = mutableStateOf(null) + val network: String? get() = _network.value + + fun fetchNetworkPassphrase() { + viewModelScope.launch { + _network.value = withContext(Dispatchers.IO) { + getNetwork() + } + } + } +} + +@Composable +fun Main(networkViewModel: NetworkViewModel, modifier: Modifier = Modifier) { + Column( + modifier = modifier.fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + ) { + Button( + onClick = { networkViewModel.fetchNetworkPassphrase() } + ) { + Text(text = "Get Network") + } + + Spacer(modifier = Modifier.height(16.dp)) + + Text( + text = networkViewModel.network ?: "No network info", + modifier = Modifier.padding(horizontal = 16.dp) + ) + } +} + +@Preview(showBackground = true) +@Composable +fun MainPreview() { + JavaStellarSDKDemoAppTheme { + val networkViewModel = NetworkViewModel() + Main(networkViewModel) + } +} + +private fun getNetwork(): String? { + val server = Server(HORIZON_SERVER) + return try { + when (server.root().networkPassphrase) { + PUBLIC -> { + "public" + } + + TESTNET -> { + "testnet" + } + + else -> { + "others" + } + } + } catch (e: Exception) { + null + } +} \ No newline at end of file diff --git a/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/ui/theme/Color.kt b/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/ui/theme/Color.kt new file mode 100644 index 000000000..f7d8cbce3 --- /dev/null +++ b/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/ui/theme/Color.kt @@ -0,0 +1,11 @@ +package org.stellar.javastellarsdkdemoapp.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple80 = Color(0xFFD0BCFF) +val PurpleGrey80 = Color(0xFFCCC2DC) +val Pink80 = Color(0xFFEFB8C8) + +val Purple40 = Color(0xFF6650a4) +val PurpleGrey40 = Color(0xFF625b71) +val Pink40 = Color(0xFF7D5260) \ No newline at end of file diff --git a/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/ui/theme/Theme.kt b/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/ui/theme/Theme.kt new file mode 100644 index 000000000..46f1756e7 --- /dev/null +++ b/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/ui/theme/Theme.kt @@ -0,0 +1,70 @@ +package org.stellar.javastellarsdkdemoapp.ui.theme + +import android.app.Activity +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalView +import androidx.core.view.WindowCompat + +private val DarkColorScheme = darkColorScheme( + primary = Purple80, + secondary = PurpleGrey80, + tertiary = Pink80 +) + +private val LightColorScheme = lightColorScheme( + primary = Purple40, + secondary = PurpleGrey40, + tertiary = Pink40 + + /* Other default colors to override + background = Color(0xFFFFFBFE), + surface = Color(0xFFFFFBFE), + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onBackground = Color(0xFF1C1B1F), + onSurface = Color(0xFF1C1B1F), + */ +) + +@Composable +fun JavaStellarSDKDemoAppTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit +) { + val colorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + val view = LocalView.current + if (!view.isInEditMode) { + SideEffect { + val window = (view.context as Activity).window + window.statusBarColor = colorScheme.primary.toArgb() + WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme + } + } + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} \ No newline at end of file diff --git a/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/ui/theme/Type.kt b/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/ui/theme/Type.kt new file mode 100644 index 000000000..315916918 --- /dev/null +++ b/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/ui/theme/Type.kt @@ -0,0 +1,34 @@ +package org.stellar.javastellarsdkdemoapp.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val Typography = Typography( + bodyLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp + ) + /* Other default text styles to override + titleLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + labelSmall = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Medium, + fontSize = 11.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp + ) + */ +) \ No newline at end of file diff --git a/android_test/app/src/main/res/drawable/ic_launcher_background.xml b/android_test/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 000000000..07d5da9cb --- /dev/null +++ b/android_test/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android_test/app/src/main/res/drawable/ic_launcher_foreground.xml b/android_test/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 000000000..2b068d114 --- /dev/null +++ b/android_test/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/android_test/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/android_test/app/src/main/res/mipmap-anydpi/ic_launcher.xml new file mode 100644 index 000000000..6f3b755bf --- /dev/null +++ b/android_test/app/src/main/res/mipmap-anydpi/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/android_test/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/android_test/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml new file mode 100644 index 000000000..6f3b755bf --- /dev/null +++ b/android_test/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/android_test/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/android_test/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..c209e78ecd372343283f4157dcfd918ec5165bb3 GIT binary patch literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG literal 0 HcmV?d00001 diff --git a/android_test/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/android_test/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9 GIT binary patch literal 2898 zcmV-Y3$650Nk&FW3jhFDMM6+kP&il$0000G0000-002h-06|PpNWB9900E$G+qN-D z+81ABX7q?;bwx%xBg?kcwr$(C-Tex-ZCkHUw(Y9#+`E5-zuONG5fgw~E2WDng@Bc@ z24xy+R1n%~6xI#u9vJ8zREI)sb<&Il(016}Z~V1n^PU3-_H17A*Bf^o)&{_uBv}Py zulRfeE8g(g6HFhk_?o_;0@tz?1I+l+Y#Q*;RVC?(ud`_cU-~n|AX-b`JHrOIqn(-t&rOg-o`#C zh0LPxmbOAEb;zHTu!R3LDh1QO zZTf-|lJNUxi-PpcbRjw3n~n-pG;$+dIF6eqM5+L();B2O2tQ~|p{PlpNcvDbd1l%c zLtXn%lu(3!aNK!V#+HNn_D3lp z2%l+hK-nsj|Bi9;V*WIcQRTt5j90A<=am+cc`J zTYIN|PsYAhJ|=&h*4wI4ebv-C=Be#u>}%m;a{IGmJDU`0snWS&$9zdrT(z8#{OZ_Y zxwJx!ZClUi%YJjD6Xz@OP8{ieyJB=tn?>zaI-4JN;rr`JQbb%y5h2O-?_V@7pG_+y z(lqAsqYr!NyVb0C^|uclHaeecG)Sz;WV?rtoqOdAAN{j%?Uo%owya(F&qps@Id|Of zo@~Y-(YmfB+chv^%*3g4k3R0WqvuYUIA+8^SGJ{2Bl$X&X&v02>+0$4?di(34{pt* zG=f#yMs@Y|b&=HyH3k4yP&goF2LJ#tBLJNNDo6lG06r}ghC-pC4Q*=x3;|+W04zte zAl>l4kzUBQFYF(E`KJy?ZXd1tnfbH+Z~SMmA21KokJNs#eqcXWKUIC>{TuoKe^vhF z);H)o`t9j~`$h1D`#bxe@E`oE`cM9w(@)5Bp8BNukIwM>wZHfd0S;5bcXA*5KT3bj zc&_~`&{z7u{Et!Z_k78H75gXf4g8<_ul!H$eVspPeU3j&&Au=2R*Zp#M9$9s;fqwgzfiX=E_?BwVcfx3tG9Q-+<5fw z%Hs64z)@Q*%s3_Xd5>S4dg$s>@rN^ixeVj*tqu3ZV)biDcFf&l?lGwsa zWj3rvK}?43c{IruV2L`hUU0t^MemAn3U~x3$4mFDxj=Byowu^Q+#wKRPrWywLjIAp z9*n}eQ9-gZmnd9Y0WHtwi2sn6n~?i#n9VN1B*074_VbZZ=WrpkMYr{RsI ztM_8X1)J*DZejxkjOTRJ&a*lrvMKBQURNP#K)a5wIitfu(CFYV4FT?LUB$jVwJSZz zNBFTWg->Yk0j&h3e*a5>B=-xM7dE`IuOQna!u$OoxLlE;WdrNlN)1 z7**de7-hZ!(%_ZllHBLg`Ir#|t>2$*xVOZ-ADZKTN?{(NUeLU9GbuG-+Axf*AZ-P1 z0ZZ*fx+ck4{XtFsbcc%GRStht@q!m*ImssGwuK+P@%gEK!f5dHymg<9nSCXsB6 zQ*{<`%^bxB($Z@5286^-A(tR;r+p7B%^%$N5h%lb*Vlz-?DL9x;!j<5>~kmXP$E}m zQV|7uv4SwFs0jUervsxVUm>&9Y3DBIzc1XW|CUZrUdb<&{@D5yuLe%Xniw^x&{A2s z0q1+owDSfc3Gs?ht;3jw49c#mmrViUfX-yvc_B*wY|Lo7; zGh!t2R#BHx{1wFXReX*~`NS-LpSX z#TV*miO^~B9PF%O0huw!1Zv>^d0G3$^8dsC6VI!$oKDKiXdJt{mGkyA`+Gwd4D-^1qtNTUK)`N*=NTG-6}=5k6suNfdLt*dt8D| z%H#$k)z#ZRcf|zDWB|pn<3+7Nz>?WW9WdkO5(a^m+D4WRJ9{wc>Y}IN)2Kbgn;_O? zGqdr&9~|$Y0tP=N(k7^Eu;iO*w+f%W`20BNo)=Xa@M_)+o$4LXJyiw{F?a633SC{B zl~9FH%?^Rm*LVz`lkULs)%idDX^O)SxQol(3jDRyBVR!7d`;ar+D7do)jQ}m`g$TevUD5@?*P8)voa?kEe@_hl{_h8j&5eB-5FrYW&*FHVt$ z$kRF9Nstj%KRzpjdd_9wO=4zO8ritN*NPk_9avYrsF(!4))tm{Ga#OY z(r{0buexOzu7+rw8E08Gxd`LTOID{*AC1m*6Nw@osfB%0oBF5sf<~wH1kL;sd zo)k6^VyRFU`)dt*iX^9&QtWbo6yE8XXH?`ztvpiOLgI3R+=MOBQ9=rMVgi<*CU%+d1PQQ0a1U=&b0vkF207%xU0ssI2 literal 0 HcmV?d00001 diff --git a/android_test/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/android_test/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..4f0f1d64e58ba64d180ce43ee13bf9a17835fbca GIT binary patch literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

FJ$wK}0tWNB{uH;AM~i literal 0 HcmV?d00001 diff --git a/android_test/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/android_test/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..948a3070fe34c611c42c0d3ad3013a0dce358be0 GIT binary patch literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? literal 0 HcmV?d00001 diff --git a/android_test/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/android_test/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f GIT binary patch literal 3918 zcmV-U53%r4Nk&FS4*&pHMM6+kP&il$0000G0001A003VA06|PpNSy@$00HoY|G(*G z+qV7x14$dSO^Re!iqt-AAIE9iwr$(CZQJL$blA4B`>;C3fBY6Q8_YSjb2%a=fc}4E zrSzssacq<^nmW|Rs93PJni30R<8w<(bK_$LO4L?!_OxLl$}K$MUEllnMK|rg=f3;y z*?;3j|Nh>)p0JQ3A~rf(MibH2r+)3cyV1qF&;8m{w-S*y+0mM){KTK^M5}ksc`qX3 zy>rf^b>~l>SSHds8(I@hz3&PD@LmEs4&prkT=BjsBCXTMhN$_)+kvnl0bLKW5rEsj z*d#KXGDB4P&>etx0X+`R19yC=LS)j!mgs5M0L~+o-T~Jl!p!AJxnGAhV%~rhYUL4hlWhgES3Kb5oA&X z{}?3OBSS-{!v$nCIGj->(-TAG)8LR{htr41^gxsT8yqt2@DEG6Yl`Uma3Nd4;YUoW zTbkYl3CMU5ypMF3EIkYmWL|*BknM`0+Kq6CpvO(y$#j94e+q{vI{Zp8cV_6RK!`&C zob$*5Q|$IZ09dW=L!V zw@#2wviu|<#3lgGE8GEhcx+zBt`} zOwP8j9X%^f7i_bth4PiJ$LYtFJSCN$3xwDN;8mr*B;CJwBP2G0TMq0uNt7S^DO_wE zepk!Wrn#Z#03j{`c*Rf~y3o7?J}w?tEELRUR2cgxB*Y{LzA#pxHgf}q?u5idu>077 zd^=p)`nA}6e`|@`p?u}YU66PP_MA}Zqqe!c{nK&z%Jwq1N4e_q<#4g^xaz=ao;u|6 zwpRcW2Lax=ZGbx=Q*HhlJ`Ns#Y*r0*%!T?P*TTiX;rb)$CGLz=rSUum$)3Qyv{BL2 zO*=OI2|%(Yz~`pNEOnLp>+?T@glq-DujlIp?hdJeZ7ctP4_OKx|5@EOps3rr(pWzg zK4d3&oN-X2qN(d_MkfwB4I)_)!I_6nj2iA9u^pQ{;GckGLxBGrJUM2Wdda!k)Y>lq zmjws>dVQ*vW9lvEMkiN3wE-__6OWD0txS&Qn0n22cyj4Q*8(nG4!G{6OOwNvsrPIL zCl-$W9UwkEUVuLwyD%|inbOF*xMODZ4VMEVAq_zUxZ+K#Gdqf!DW$5f)?7UNOFMz! zrB~tuu=6X2FE(p^iqgxr+?ZK;=yz`e;C$#_@D9Lj-+TDVOrva>(#*PVbaHO>A)mhl z07OJWCqYC60518$!&c`eNBcBW%GnfaQ*$eazV^2_AW?j)h;J1nUjN(I9=0+!RVx~% z3@Tf!P0TE+98jA?WceK-}A1% zW!K)lyKcGqy#M~})315-A#2NXQ`?6NR#Apo=S!oF=JfpX>iR*49ec{7AN$xxpK{D$ z2d%Fz&rdfSqourN$~Y^NFIMV1CZ?J*bMx~H3k&meGtH@q9ra2vZxmA$S(#jaaj-g4 ztJmxG+DLV<*q<|sDXPp$X>E)#S}Vm&sRaO5P&goh2><}FEdZSXDqsL$06sAkh(e+v zAsBhKSRexgwg6tIy~GFJzaTxXD(}|+0eOwFDA%rn`X;MVwDHT9=4=g%OaJ9s%3b9>9EUTnnp0t;2Zpa{*>mk~hZqItE_!dQ zOtC>8`$l|mV43Jbudf0N6&&X;{=z}Zi}d1`2qmJ}i|0*GsulD3>GgQXHN)pkR6sf1 z?5ZU%&xtL}oH;YiAA)d*^Ndw2T$+Mjuzyzz@-SM`9df7LqTxLuIwC~S0092~+=qYv z@*ja;?Wt!T!{U?c*Z0YtGe)XbI&y-?B&G2$`JDM)(dIV9G`Sc#6?sI60de6kv+)Qb zUW~2|WjvJq3TA8`0+sWA3zRhY9a~ow)O~&StBkG2{*{TGiY~S8ep{V&Vo2l<6LWsu z^#p0-v*t2?3&aA1)ozu|%efSR=XnpX$lvTeRdKlvM!@|pM5p2w3u-6 zU>}t2xiYLS+{|%C65AzX+23Mtlq?BS&YdYcYsVjoiE&rT>;Necn6l^K)T^lmE`5u{ zm1i+-a-gc;Z&v-{;8r)z6NYfBUv+=_L}ef}qa9FX01)+Aaf+;xj(mL6|JUzGJR1|fnanb%?BPPIp>SCjP|8qE5qJ{=n5ZGw?81z3(k;pzH%1CtlX50{E7h)$h{qGKfzC`e2o`*IqA#tjA z`Fz&^%$b9F*N`)U-#6>a)Z`55`$Dd0cfcs0$d13^ONrdCu9xcv_=n#WQo8stcz3jP9|2EvdI-RhJM3%Q%oM&!OlShM|0 z?gz?wHZSnm45njLtsz8PVT1S&jAlbKg5kVam$p16=EK@Sj4EP0OtH zmJDmdc^v)x>56Qg_wmYHz6h)>kl_h$>0@J!ypv%APmjZTAQVLy6Fu50RGY&JAVNhx zrF_qG6`x9MkT;1SFWo$)l{M$;3qUDn9JwE}z zRl#E_bDRJFii61kPgBybIgp8dNW!Cc1b*^YYk-#oWLJvtM_v^hQx~9?8LD4VFFxBF z3MlrsSC%f9Oupn*ctPL0U1fwfX?`tRhPD{PSLFPQOmIt$mDy0SgpNVvHS+f#Do>h1Gn?LZU9(KaN>Q_=Y*_T zvtD7%_u^^+{g`0VGzg(VZrpVQ6Ub5M=tI_p7T93R8@3Zulu3|#{iNcu!oiHxZ4Rf*( zfmiN$$ru(*_Zqn=`Gq#OuHRTSwp7uH_SokR&|)RuW5yo=Z|_4?qU-JU+tpt>!B&Is z@N(=SG;bpVc;AO@zbmMM zScqq1)b-ZQIrs={oD}|?6y{$HNB1U0^LsBh8JI&3!GBZxOXI<}&5-$lgkAaYqhOTb z?2vEnZ$-kk;*M_17(upJF3%+iH*s0-r{vttXVB2OUwI1s^+G(Ft(U8gYFXC}#P&E^ z>T@C^tS`Z7{6HT4_nF~n>JlZtk5&qDBl6r|^kzQYe`wq!C)n@$c>WOPA61NDFj<<6 zGW71NMMhwAl!U-yqrq2xrSFqRCI8acw7?}3j;ynxo*-b7Co;g5r%^j=H@9({PXXBf z@r>U>>N;E)81wx`B4f%{PB~MHka_);%kBCb(d|Jy5!MqJ%2p`t&@L)4$T2j&-WHvG zv3(uyA_gwqNu(k?jQTtv3dgPKRZoH8prxe7>pQBW5L&dpumS&5Ld2?(sCpJjvc4L5 zEnh&?91WVm)ZdTj=fjJ$pPDdgAttLXuke+?KdKxu*;kTC(r!tQk6;gxj4h%FdHAt(^M3YvYj(!tOeN)+Hvj6+< zzyJRG?^lZfWuR#t!tUKP&(?%3v&Zd$R2YN>lB(Lq`OInY48%4%yTv2 zYe1{G`3)(PDEio5Y@-I5tUf`c%%OCJMtSW56g3iEg%3`$7XSJJHyA z<|7&N)5Xrlgv~%BO24eFd;Hd;uiK%D`EdK|quUeRZDqbh9l)%j%J#0lfrZumvA<_w zu&=AVvdChf6}eqh(bUz`(`Ue*p01{fBAcTgKyDYLs_I+YyJEk+rM@avU~>fB$n)HS zM7pfJydu`i%gfS<{PF94kZDv$t>06sAkheDzu40NJ$5CMW%n^Lls?8^p^QGWURbKu3ZduZQZ((s2? zzE`}<{;Zt7<$C|9R8A~DJ~@%x>TfP zF>TX8)@v|t)q4GjRt<}5s6hLHwRel7>V@&r-O|Av(yh;Q1A{E>Ir>p+%dHD|=l+lT zpr(Dg&>#Nu=!)6bCLr-ZS%|;h)Ij$+e@r8_{qO19QvDe=&1tmpY*0lcA^Cc-#{9fQ z<~$*<&P$Q<_jy#<$40PMofM7aQ}C=jphI`4kLg}Z7CIN#26D{-4v-_CA-LiE@(%{y!BzsU%gG`Q?sjLUf%qFSl0y)2#ae*+EI>s|i`d^V$Dn)qmzqRq6VJRY|{4ujsIU%#bnqU6MR&-1I_43=|5(6Jr;Jvert) zE?S|Tmn}Tv<-??sxV5@9t}3D=>YZ0JrQe$CO~|EY=Lj9RM&4svQHPQL6%pV5fPFiH zfXDx;l@~et{*{U*#c#Dvzu)|znDO7$#CRx)Z&yp-}SrD{&|(MQtfUz~n35@RLfUy=aqrhCX0M}J_r5QsK~NmRCR|Nm&L z41UdsLjWxSUlL41r^0K&nCCK>fdR-!MYjFg(z9_mF^C|#ZQw?`)f6uVzF^`bRnVY& zo}@M06J&_+>w9@jpaO4snmU;0t-(zYW1qVBHtuD!d?%?AtN7Plp><-1Y8Rqb20ZaP zTCgn*-Sri4Q8Xn>=gNaWQ57%!D35UkA@ksOlPB*Dvw}t02ENAqw|kFhn%ZyyW%+t{ zNdM!uqEM^;2}f+tECHbwLmH*!nZVrb$-az%t50Y2pg(HqhvY-^-lb}>^6l{$jOI6} zo_kBzj%8aX|6H5M0Y<)7pzz_wLkIpRm!;PzY)9+24wk2&TT{w--phDGDCOz{cN_ca zpnm7`$oDy=HX%0i-`769*0M6(e5j-?(?24%)<)&46y0e&6@HCDZAm9W6Ib#Y#BF6- z=30crHGg+RRTe%VBC>T00OV6F+gQDAK38Ne3N9bm|62tPccBJi)5{B z4zc^Db72XiBd}v$CF|yU{Z=M|DZ%-(XarYNclODlb1Kz1_EKLy(NSLCN`eUl(rBCL zT*jx@wNvze0|TSqgE(QArOZU)_?qH(sj#TwzElLs9q)(0u!_P|R%Cy_0JFQxgGV>1 zz4?_uq<8_gM0`c*Hh|;UMz~vrg1gQXp{ufg`hM_qU;U>+zmvc5blCLSq@PrEBSGR# z&8=2Z4uXN`F3p73ueD1l{s{k$WipAvSh5W7ABe?4)t;r@V?y`bNB5FvBuE|0VRTb< zM1Hn^?DSsJY+sX@T5xW=#>T9VEV|?<(=6|ge$X6Sb05!LFdjDcoq*gM(Zq=t;_)Le&jyt(&9jzR73noru`a# zN*<`KwGa^gZU3-)MSLF0aFag#f0<>E(bYTeHmtdbns#|I)-$)mJ`q9ctQ8g0=ET?| zdO}eZ*b_p>ygRTtR^5Ggdam=Zb5wmd{}np+Jn1d_=M`~P=M67jj})fH4ztb5yQqQW z^C|C&^LHAK-u+ooIK)yM)QM?t;|<{P;;{`p=BclzAN#JzL4jCwXkQB1Dy{=^KR`=~ zTrr)y7eiYBzSNs_DvO=4A6#EgGS-zY%Vi)N*Yb`U;6o}KR}dq{r9pT5wqZ@3NOE8- z9-(}D|Nc5732CSYQbL)!gPQ#RbD8BhK3dl{sUuPvei0tkvnJBxDEAYTesU8H$)g(Plra{VH(v3u^CO1~(+ zU0O7#)jaS4{NcwA+LuSm&VBcX2#Im3xg)W}ySNw%->orn1taZ&+d)}8gJTqA!u|5P z{yv?zol_3|(1(%M(EVU=cp?L`{Pi|ixk{U)*guFML3P!OSlz;zGA#T+E@8@cgQ_mv1o7RSU=Zo_82F?&&2r;WE z@wk}JHYEZ9nYUc(Vv~iTCa3u8e4q(yq<29VoNbKk|`mq%I6u)My=gPIDuUb&lzf4`MEA9^g8u z)vp8|$$HE9m_BTV?lOosIGa4jud=jIbw)O2eCMfyw2*S8?hjWw^nqws$O*M$3I1)x zR0PWFb3$ySOcGTe1dz%N0l;RPc`x%05FtT^f^j{YCP}*Q=lvp4$ZXrTZQHhO+w%wJn3c8j%+5C3UAFD&%8dBl_qi9D5g8fry}6Ev z2_Q~)5^N$!IU`BPh1O|=BxQ#*C5*}`lluC515$lxc-vNC)IgW=K|=z7o%cWFpndn= zX}f{`!VK02_kU+Q5a3m37J;c} zTzbxteE{GNf?yLt5X=Bzc-mio^Up0nunMCgp*ZJ;%MJvPM3QK)BryP(_v@ei4UvHr z6+sbCifQaOkL6-;5fL8$W($zZ_;CZp305C;~$hhRquZr-r)jjd1z z31%ZK{-(`P#|Um_Sivn@p$-vz46uqT>QG0B1w9znfS9A8PB2LaHdzA|_)yjXVR*l{ zkcu3@vEf7bxH0nkh`q?8FmoO_Ucui*>_a~P?qQrlZ9@+D7%MTpSnztpylXrt5!-k8_QPB?YL8Kx_On8WD zgT+111d(Op$^$&KLAN5+@?>f7F4~wFi(8TL8+szgVmcMDTp5l&k6~=rA{Dt}!gb^r zSWY<)M7D|Z2P0cEodj6E42PV>&>DFmQpgt)E-|#sSUU@uKed+F680H@<;-x{p|nuH4!_mn85rx>wz;0mPi2ZkL#k6;sznu?cXh!T0S>{w6 zL^gvR05NY64l*<+_L>On$rjx9!US;l;LX6@z}yi#2XHh)F@Oo+l)h%fq$v}DNmF2> zfs^_t0)3N-W<9-N?uedVv{)-J0W5mh#29QM5R5h&KuiRM=0Zvnf#lF=K#WlCgc#9c zS;qvh(P$!_a8JwyhI^ZJV2k+B6Z^64?w|1?5gyo6y{}923CRZfYVe1#?F% z7h2SUiNO3;T#JUOyovSs@@C1GtwipycA=*x5{BpIZ_#GCMuV8XK=x;qCNy{d7?wA~ zC+=vjls;ci&zW=6$H~4^K%v{p}Ab?U%C6Z4p%eC<3ExqU$XR<}LLF67A$Sr20DR_pJ3yeBa~ z^sw{V0FI5;UpwXsScYuhbqGQ`YQ25;6p6W^+tgL&;Ml;>S3CGpSZ>VrTn0m1$y$HU z&65)I!c?oREz};c=nLCliriqQX->4uivHTgd${GqeAlf*!P^B|jkU|*IdNP(&6C>4 zqOW$)Nw9nvjy^&`?E|gotDV{JmJ9Q~vuhy<`^C4XIUDt|j4o6rK^e8_(=YqC zuaR6TRVf@tUFHB079o4MBIh{M~4>WwnGgesQH*3?w(RA%hCZ*7)b!aNV=yOQ%o_Y=Lt0Sl*(9^jfRnC210Om$=y>*o|3z} zAR&vAdrB#mWoaB0fJSw9xw|Am$fzK>rx-~R#7IFSAwdu_EI|SRfB*yl0w8oX09H^q zAjl2?0I)v*odGJ40FVGaF&2qJq9Gv`>V>2r0|c`GX8h>CX8eHcOy>S0@<;M3<_6UM z7yCEpug5NZL!H_0>Hg_HasQGxR`rY&Z{geOy?N92Z z{lER^um|$*?*G63*njwc(R?NT)Bei*3jVzR>FWUDb^gKhtL4A=kE_1p-%Fo2`!8M} z(0AjuCiS;G{?*^1tB-uY%=)SRx&D)pK4u@>f6@KPe3}2j_har$>HqzH;UCR^ssFD0 z7h+VLO4o@_Yt>>AeaZKUxqyvxWCAjKB>qjQ30UA)#w z&=RmdwlT`7a8J8Yae=7*c8XL|{@%wA8uvCqfsNX^?UZsS>wX}QD{K}ad4y~iO*p%4 z_cS{u7Ek%?WV6em2(U9#d8(&JDirb^u~7wK4+xP$iiI6IlD|a&S)6o=kG;59N|>K1 zn(0mUqbG3YIY7dQd+*4~)`!S9m7H6HP6YcKHhBc#b%1L}VIisp%;TckEkcu0>lo@u995$<*Em;XNodjTiCdC%R+TX|_ZR#|1`RR|`^@Teh zl#w@8fI1FTx2Dy+{blUT{`^kY*V-AZUd?ZZqCS4gW(kY5?retkLbF=>p=59Nl|=sf zo1Pc|{{N4>5nt#627ylGF`3n>X%`w%bw-Y~zWM_{Si$dc82|=YhISal{N7OY?O`C4 zD|qb}6nLWJ`hUyL+E>-;ricg9J@ZNYP(x(Sct&OI$Y!QWr*=^VN;G3#i>^1n4e#Je zOVhbFbLpXVu*16enDM+ic;97@R~u&kh__kgP#!R`*rQEnA+_dLkNP~L`0alC|J;c; zeiK=s8;BsLE)KbG3BD&Br@(Ha@SBT&$?xX`=$;eeel=|R_dIr6-Ro?=HEjnsJ_b`1 zK6Yg^-6;^2aW!xeTK)A~3Rm|L^FCHB_I>jIju7ZGo&N_1*QHkxH2!!%@o4iZ?vntS;&zJdPe1dH#04YD93A44o-MpfD zP{rn_aq>U%RDvC2+bp;xPlsOzauIi3*Lf42`jVKKZCRuKdYhi>FDuL2l=v{$BCN#Q6796s%r-AG$Q^t(3c@ zD?w0UhYr11@feiyl9kY_@H8~|xlmO<8PfQmj1!$@WieW@VxR@Psxfe-v9WCi1+f>F4VL?0O~K7T?m4-u|pSkBpUJZZe*16_wAp zSYZ@;k`3;W3UHKUWc8QeI}0jH5Ly=cGWQPw(Kr2fm=-5L(d`lcXofy8tJY3@Tuadz zYWXR{mW7XT!RF#RVCe%}=tM*O6!AD3^(!8un~opNI%Uko7$5t@<8+?; zTxDys(MyyGsUjtSu9$+|_-t!U3fVb1dkK?l`17<+jfl=hrBHnDSV>^R1=TnQeyqbW z>ov#l%!1|S!1>8UUxIdhQq`_klcHVx0{?#>K3#$4GlXncwldt!g17TcvKq-jo_996 z>oA=tH9CqRl6Yw?Uc`am!V?lHJbizOJaVaScf1UP5e7Dbgabq=b!B~T&_F6?ooU>w%x0A zH~&MHJ=q`fCH{U<7MDXE4SD32cDZA)WJeWkllJ`UspWaS#eDe^kg^oU_A14UE9zG-a^g{xaXf$})Wik>gT zl#dkzGr(;h0JZDuFn(+k8wNq?PZ5grQ<+sM?wBGt@JnH6v0#or-5wBQWKU~(S_> zkE!tc*ZJ1Y&*p(xX84POb3cClRMd!^qJ#CAZfIepEj-<`VURS_yCz0(?*Ixcj4 z-!zV1_QZhpm=0<;*(nm+F>T=)o?ep@CK5I%g^VAA+RB25ab?7)A~z~egru=I1S|@v zH7tXV!0wmGS^qj#e+MY;C5eUjEAp$Y?LDkS^QPZ}8WN85?r$u<-Epi;yZ1|J2J`se z$D6DpH~2F=eI0B&=UFAUnJvZAmClJlK)sutJ?M>xpZiWV&0=G4MZP+x+p>EX=HbCz zxls%Mw?*u^;LbHWIWCyq+yi)`GmFn9J112CZda_u@YIP%i;srFg_paU02Ifij*7}l z&CF-(3|>*a|+vbNR`^RP=9G?ymEJ0Z~)d&c*UE$UMepZ zcITr{0WqhxkjUnM15js_gW=e3Uh|y6ZReaXHIz-=p`x5VvB&rH9y>Amv@^WmXFEw) zQXYrk3feir=a{jMQ+wDIkkFnZ$k{sJakHn*?u za%4b!00ev8NVLM1TY=cl?KB&55BY_MU-sg?c>=Dbz_W{(Z~c?HJi*XpYL)C6Bd8WH zt+v-#0&o~@t4qESi*)+eW%@VD0|o^yF)n0hME$UtXF$*Lvh}7sso{`|pn*JDIy5^Fm3s$5*zEE=?u5<=l8FJc3r%+H} zdfoNl2J0^~!-*mOL5o-x32|e0Im*E!yY7F7E5N)W3>+v_LBydlEx?4$RL5f2oYRD# zaR0wv(-p~wO0eLDl3K=%`{5+0Gd$ktO=W)gWlGZJ0`K z$_RNA=ckrfa;H0KA~dR^p�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp zwO~NVXwXCl;jE<}>%@xz|=8fIJAB?>+E{7)|4l${4ngA3G|=r z2Dyv;VVWSgZx9Wj>qUjleGl3Ei9K4>h!(lPS%8VOG>Xu0%6VDz^O=bjJmuP7>DeUv zrbI}MlHB^^d?{zv6d=@_ZD2lg1&G7UjnVN{1}9WkaM3H~btX0GtSzB+tZ^qRgWo4m z!GmimlG$=wgXCnr6j@m<1gAL46#T~5Bnm=2{^@>|t&`9mkEPddj zAvG~@Tv~TAm2i%VW}R-g(Z0)z-Y|szHr@rk>4MAyG*Ma*7Yh#H7(!-5>DZ@8r;_dx z{prSe<>~099F8vsYd2xff7uAS%7{S)f(|@me3t2$iy&NEc7OUEchp@9A|X;;IA>8!oX+y(BKJ$EzV* znR$z;!L$s7uy@{OT~nG#B!NRraT8(X##Ho!0r_o@gg0CA-9H^;-uE&?$2$nHv_00o z%cbuUc-tCx$Uh&EZ4Nf4Zgqv)Y6>usG3>GeQnxx_Z6+PcbX-+ysbt1hQ`K1LDpOE? zrAhIZhSN9yVIAOa22gn577tbc&i3|3V8NWy&!tw##`}9*x}gtI^h1DzZRA>UuaJG) zaZ7j)dq!O}{?#8Y7~7i6fHh4{`pL?>-18|p!S75Y#^DM>-S3)vuZG+Q7l@ek zQP~#cBpWgg#mApc_sPYjpw8odQuRokmTkzcNl`^CcKB7e&;zViV;{Y{o^Y$%7i0m# z62%#1Lq!RC?}lK>%mp}T!3Xv;L*0v*>USLm``N%>w>@fwC+#T&Tx2bN4w(20JB}oU zuSa6v^kXi0xPs?pbaOHnyiqq6By1EZY9OZ^^QA>{q-Hsd&m`pbQ%8121aWG-F5xf zlZ%;B{;C>X19|`^_?dVyCq>n+41w7|!tUS!{9rHlbhX=SZO5CQ^;!Du_E7*`GiR^Q w)2!4MKjfSAeNo!9>IaV6aUZ*?W>} zs4%E?srLW`CJh0GCIK@hTkrW7A15Iu%N&?Q^$0+!{Tv&|t^Y@u%!L zglTg&?Q5q#ijZ;&HBQ?FNPp;k3J5!&{^+SGq?AX~SiOM9jJMRpyP?RCr@z38AQyy&WRMaC;n4una$~nJKSp?q|s8F00c9?Q! zY_ovvjTFm+DeQM^LXJ#v0}6HRt3R1%5PT*}W!k8BEM;Jrj8dIceFo2fhzTqaB3KKk zGlCLI)gU25(#u6ch6GeB1k@eHq7l{EHXv0n6xE#ws#ri}08kkCf8hUt{|Ejb`2YW* zvg}0nSSX1m=76s?sZhRY$K=3dpJ+y*eDULGnL2}4>4nvW^7_<~wIM_5fjvwt4h1|g z)g0Z6ZFq9j<~9~b8((~TN{Z?ZQfw|is&Xp~AC61sj;xItKyCHdI|tCMC_LbXF>~vR z=w6V3^H=W4CbAgR4#xw}ETTwu2guW~=Crl@SMXv85jQ=%y!s^?m4PI0My7MWICO;- z175jm%&PcPWh8QdOU(#8bp4!N7ET-+)N}N2zk2)8ch|4Q&lPFNQgT-thu053`r*h3 z_8dI@G;`zn;lH$zX3RzIk`E8~`J=BBdR}qD%n@vVG1834)!pS1Y?zVkJGtsa(sB~y zNfMYKsOJb%5J(0ivK8d+l2D2y&5X!cg3BG!AJ}910|_${nF}sC1QF^nLIhzXk-Y#x z0)&1iK!O;Og0Ky!;`b~v%b$`S4E&fB)1NB4v@8wr( z&+NX4e^&o)ecb=)dd~C!{(1e6t?&9j{l8%U*k4)?`(L3;Qjw z#w7FS+U(94MaJKS!J9O8^$)36_J8;thW#2$y9i{bB{?M{QS_inZIJ!jwqAbfXYVd$ zQ5fC$6Nc9hFi8m^;oI-%C#BS|c8vy+@{jx6hFcf^_;2VRgkoN(0h!_VSGmgNPRsxI z8$rTo0LaYq-H5i&gtj81=&xU?H-Y2==G@uQV7E`@+2E9XQW@{&j`?EOktk|Ho{HU>ZqDzvgjwBmdex z&uZNd2C1h{{}2k6Ys9$*nFP3;K%u!MhW`uZy7Sn`1M1zs@Es&;z*Z>Gsh@-3Fe6pE zQD2@cqF((NrRevgvLsvM_8;;iNyJ5nyPyy?e!kvKjGj`6diRFBEe49Oa7wwkJFV7Z z$YT&DWloYu-H?3<0BKn9L&JYDT-SK~*6c5pi18P26$JESKRYj{T7Zk6KiRJcbvOO*{P56Q6s8msbeI3>|j>K9}Q9UBeq*inXKemCm`-<5|-$ZyN4u$(3 z&HcvqehFD%5Yrmykg-^d`=BSa8(i=>ZoC77^mWY{evp(km@aHqhUECBz76YiR+VYK zY_avFC~V3$=`6C4JhfHAQ@DZtUOwH`L;oYX6zK0-uI^?hS$ALfq}A7evR;ohJHij} zHSZdW?EKv9U1s4oD*<(0oQ*;MaQ6@cvGL zuHCPgm_NhVsgp^sfr*ia^Db}swo1?O(_Q2)y+S$CBm+g=9wCOUPbz(x)_GbaKa@A7 zuI&!ynLiZRT#V%_y_-D`0Z5lT*auoe{(U5NylTzFSJW()W-#F6*&A`LNO1bV#Y;QJ zSbLBnp|B^dtK|KIWC|No>JjWBWE@n7O)x{&^E(WMeMvp57#qA8m* zeTow*U@_86B#Fm*rxyYu5PRWaWHx8y> z*qmHEp(AMDl0v)ij(AY8fnH=~ZwwjVAbu*m5;xPfidh@ov6d8g zfJsi&!QyK53Es%sC39ts;54V68koALD4b|%tNHW0bIkZAJKa=W&FomJSEDT>W1xIX z1x%Z>AvNIsSPLcn3RTcHXb@KB?cuM)=x6fcIx>&(GxqZ8w3p#jJ(GVgc*`c0HG}dv zIop&Qim!K1NFwic%07KcjWgHBPUkq7f~lj;TPqVGTiT#cUeim>;nY`>h@a*S{qQex zQ`z62WK|Mj)Y{tfF{;T4P;c8$Q|KU?Joh zIkA^z%X7z|r>4aTh@|StTi!-r1D!g=zb#3d#{{&K3CqE$Iz-UH<%37c zRfkO`&uM%#AD3PHv`g5t0e^O%nVL0d{Xlx^EjEC3#skF@`zl-7PF^0oxW)1!C!JxR zWvuAHH?)61FKA1QeT*_sY7;_Id#!GmV4n`MO{~sv}VLSK` zXRw=Y=Clz*00B(5y^K;gCZMAzjT5+c3IC=)l(9VIDdatpxj3y89WwI|bH&$!ZEvp` zPR!T@#!(|KfI-w?!&+7$N3F6>tD{YO4Qg$d_`nNEdfVCha9vaPn0jI0`)`@*72hq! zpU5ND^P*RoEkbD5o#az(-g=Y)L>HH>Oc%}$ zT3Rs_ih0;4+Lv4Y;@Iv(;fUbQ=i-G(#>vghec~*j(I#r|5mqFiJBpzi&hzEcD{u$< zRsm0BVYn=pT;0>R(itW|*D&;O%bOc7et9ACaH#J>z3A1A~6fdP>pmbM%xzm4>|;c_?B+%sl;Qs2{t!60$^u zH1t@9^6>;?!FuusnISi$f5CL&;z?EqJN$FBuWDA#D5`cy_UvCFIVvf{c?4N0teh;d zET$7aVbj08KTQS!x?Nd1Is8q8qFzs}a=!@nJ;7FSfCY^T@D-gpw`w<6e#X3+;O}1h z$%I!M)0bg|EKUA04Qjn@+x{Rj8vt6Wn!R|3A92z}^$KfF5(#CWr4y#~re1CN4i4w0 z#GsypBR{xA3Er7sgAi(|}1-W?s~n$7?K|9WL8kpVfw-;#b9 z+mn;=ep!162U5R>_t}fOt~tE?s#m( zO-S$7>Ay6*hHdZ)7_oU915WYYCIX;hFI-U2EWYX!pllONr@Q--2o~`!isi6vTPLJ4@(|o=%NHYjo0_S&q*UQIROw@*N-By@PaQ&;YxFZ0aR zX&}LeOEz);#m~Hwm^VAY8DK}b$F4bo{jMN?d!lxKPhNklzr^Cd`0f4oJr^z=I|l`* zm8AHm*fPV`0=lF3Pnnp}&J0N1X@}-D94YvmUabFrLGSnTz7Mu^21F#O5tN#CuY9Vh zUZBH=ez%h*wkf0hBtXJh1SN3d+IF{gzT7lp)j}n?03lt;XSQRAh7qd&v;RwTYDuQ# zbI2*r<>?x-G0@hM{;%{VBD7nLKt~D`T~-HAt5;h%i0_=Ifs=yHma5dhJ+QMG?Ux(a z|E?1CMy1!~oA`FP!k~iG=t&5#>bVdz=peT8HMB6Y)#7PpETtNryT^+Rv3vpJaF^zP z{H}0-LyV9Fu21ID%wO9f1IKlFr1p4c{o-?03vyB-tr5duk^&L$;m_|f$vs`^Sl{j2 z95}oY{LlY+=ZS%J+tZoXCd0*sSU7w^gjovXn+g7uyra5{cU49@yHf#Z^Jl-$9cIfo z+AJuxH$VLb=#+uBbVmUjnx zxb1pZ@-O9=AIk4@S)m6fJ2?{HrNYwwnL3a45muuNjr;6$O`bGEM0T4A2_S$t=86*- zcO+0mywg*j#A4mU}enR_!cGmIYQ;qwfchWtFEXL)AK%*;=j znYne+hS4EMy3S)C*mZ1KI>!+)0V@9!N6H$Y}~MJ{rYuf zz^KljIWvFi-?#?V@LPR&c6Nn{!=XM z>}-h$S76;$H{E{Y%@^zlmOl^efBwa%UU+jJD9UVukQ3ti_kH-?H*RC0?M1W%FCvMB zM_+v6fk$6X2sx)-p~B3&Kl{nscK}pNLM*qjtpaf9>AU{-iPKQZR8yCg!TY}Qg*(;) z)gdvCcB%kppZc$VdvsK@)3l1{&DG!d_6OHOS`y=ITLEVu`unSKA2E%JD*DVX{LJ}K z9l>hMRDqxQh0lnpGHpVYneX}eA3Pt|2v%=q;rt)``R|#bDyB)OXY&vI_@|*}h}G?^ z@aZ4_!7cQPX`!fW_?{oT1NTwHs#l5L-0`E|y@48<3Q^HFf8=Idi zpJYD%1MkII!~|7I^WGo)IF=?{>ACnjJ_WUi39C}!Q{QnheVJqeKKqq5^o5CBde(g9 zvw$X6^jz_^E2$wSw4!q5*RG(C2_^XO$HBn_55vbl44OnTTRwRaePP0vo{K)U1#99& z<>rq7V&V(<&@I%MFoN5zrY}sz=(*-L&}1QQ*a%`u25h{cFj===17eB_uGuzG&byQ< zrm8BJZl4r_E$3k|Wo6FW0-6M7>qac5uFQsQcmkLWGfeH74S3Z_rJ!jgN++!@i=HW8 zkyjI(oPH-+-N#Qc^-mpNO`bc6r=2-<%&Wy5K1vfFJB(L_IkpS6fY^NmuL8qsgj>MD zn~BHH9WM~32_3vd=W&B)k7F9q%stJx+b_L_X-4zr^LVUMCmyCTA3sWtkvsmME?Xiy z?xOSfB=_$oY06~J-HcCq&)qcW{j;uP;?Dm}=hkq?zh&n!;m((-G-u_t|6x399Q;>A zgNpxoJNj{u|MFDH7Rhq@FCAl0dE|ddnl!oh9{Lq?@JDoR6L;C941IK`ISfdE$4S zE0AUQ8+2|Ncl_q5QkSp#AODp~(^mfP&%Au@@|TBQwoP`UU+V{6u8|)6ZA{~uKmQ*M zmrMTDU8S~8Eqi{^v0Ug&5Upcm#y7Z1(RbgZAG8jB$eRwCspQ)>5;U)oGZ&E5aeR*K z8Yt`Y0$G))Yd(Y3KH}tA4`-_QmNke5hU_|nq=xtyjwW(_o?itz>B>WM&^63bNdQ)k@-IgDHW*RW$Xo9#RzrTrCn7L2H{9Amq|qNg@#eZY=|P zCoI?2s+L)zsM%WX(NbVEY^`C>lFjIBYmJ6@DKJ0ZT4&F&WHW!dwa%QzOG!?jY_2(S zDcEzZbz*2Q!43|z))9yOP9X1Xt%DXzwY(3tl-TR=Qb_MbZYRrooh;dYYmS!U_as1(=YVB?Q_A|tNu5Ut&_q3jbfDM zoFxT^uEuH`nX3*sB%K?GuHUkweYReBwnHqh3P)~`+s3+Tj!rDA1e)8vuBv5J*IsxC zkd^~b(aGzArj08{>cnzOuy04C+C`}gb|Yz-1avxeWzev3NzcHbz_&4W@QCr$z3~w=8Ua- z`;vfG1~BP8CyLb=F7t1am~ph_#|O%$khSJ9%Vtcn)YmpgQxF?xM^_Vb+5fnpB^W0I`f%X8gb9#X{Q-yJG0{Z56aWeI&zPxnf5pdJA38bM`cYnS#x)% z`n1tFf$i)W-hGm(f9mde^=X@NcV_lFb=P`4&CI&H=IArijGwdCk&X@uQ$5xmj!~^? z#$ROCI)V-~t%L%GS#wo@U27ddR`4`3)WoB{R-4snfNrfee|kI8^bu#yDgYqOwas9# zmcb`3!kRJ`Cr=_tq)8aMt{aGtUZsqwVlj6DgCGre>AEt&x8H_in!x@uwgExIh|-mA zjdaC(29~CTVSaaF7HPbql&*9Uo8P@f)>LqCXclr}peS7_1BQ28u9PO8Eq1@`l3q9o zkfKCaO2?T?ZyA6loW<#9_c^O=m<&h}CA!ineAD@=(gbq`vyT|tiJ6#^B1$P;;qax` z55k&Q?wEh#87niLo*+n4L@65J(Nz~=Ya%7^(miLb(E>A3B@|Jjl;FU&D>o|9#7PJH z?|ago!o;WC^h=|T7PVBg(DAB}72cyUS zb(f>Bwbr!F1eTCO5fpj<{PqhY5>143p?~5ZA5H40);=@M#MYvrB6gqHbU_!GSY??i z%s=>-ciA4*zOOZHds0a(kWewZ4h(k8h(ua7HX)Au&mY~H8KY6(_cb$_&fA@QjIW-*heP3%$d!m5^AdnT}`12qA^c@!g3DOwZ5WwE2?)-yU z!)Vx#Mtxt?FzFTwK!77sy7)sMzUd->w4^bxtpM2j!b1pjgyk zGKwWGeb4)^zjy{9Es&PU1}gwg?|J#L$KJB7ett9@4M%-nGtIQr0>Fl@8-yh`-+1ed zS6r}(MeSvgSoFmH*_WPu@i?}!AB~2?;i&IxrkNg~cQ9Som98tcq)k^|eeER|Zl77t za-TVUc;DNvzVXJ%w52+#weN?+;i#{f#!Oc&z?81*N>^e~ltRS%ZI@lR{rs()HmqG! zx*}ZrI-EZ}ckJMiy>A^oofwDfC~IH)z8{VHKGT@#E5I(Ll&+MnMCl>~AV7+>Gi%mF zkU1QlKASdR0B80!YhP<$Ywi0?W2Ux45oPfxv9QolWzJPD^weBfvo4SONxP35106sAmh(e+vAs0GboFD@PvNs)jNPvarhW}0YliZEg{Gazv z+JDIpoojRVPr<*C|BTq<`6ga{5q^8^!|0cxe=rZ!zxH3%f5ZO0cQ*Z<^$Yt2{|Ek0 zyT|*F+CO@K;(owBKtGg!S^xj-Z~rga2m6nxKl9J=fBSuNKW_dLKWhJKeg^-Xe`^1? z`TyJj)8E!#>_3Y?uKrwqq3LJ#SGU>AzUO|6`nR^u&3FNN_jGOc zw)Nw`wr3yIKhgcee6IaN=ws>M{6677%)hPwx&HzC(f&u~&)6@b2kNRzBDQAP0*H73 zq%McOmRk{B3i47qRe=DA*$&odrbEJZ*pV9XXa&p@wlW~@Yfs>V{yiTtplMhgM*-Bz zsSnlq&pG;z0OUN%$~$3=g1UF+G*>+17eRbBf3=y79J}KR8owon@$1Z7MIrvvWWH)34nK2SD)GsrJ{l z1Cl#oVo3A8qY3e=aF)qzms~FG#2$LzT=gs&aVMOj>(%{y<&O0cG!nCiESl~x=^dF{ zKvj8F1K8Ng171wwM5Fh4KoQw`_c6#y$(5cAm7e}~nJ#A*fx+c9;y#&W!#VukR)ugk zKp3=+;Ut+IYn%m+r4d*<`L2h%aDnX5}^!5R|H;(34AoVWjRx(msBZvk;rCI*|~ zdOijqI@9Z{Vu!~jvHW{lBa$rnl4+!s_5sfK3bCGk-B%iDe&@-}+%fOKU|(9?V1 zHE8&@4z)Kx!RAvAs z!Wic9=o#(bg?kc-G68-m(jZ`^=XGUXb)}t(%&~sjFnV^sEX%hSy6UKC4iOhgV=BHV z2w`4g7Y=s#Vu2B_?#VQ|hP39@eArgfX>-0S+dd&^mx0*wp}>)x;c4RUgxz%;oNe?& z-7-lJ@Y^2^C;=qJsxx5|xF)*pTGhch2B&kxtn;f!7=gznk}I3}Dh}(CoMXgA5-p&kS202!l?!fT3t|HG*rIP~mS* z$Wjo}jq3}z$Qq!9yrtd3fM0N629ZM?LU$nv@Tv9b7I;D|;0H2dsA~g7Z7zp1| zB)XmrkMgF6OQr|R)HHD^TE{Y#j!~SR?b`Xt3Qs`B+x<hxexYeAjMUWdZ-*n9%(1)Wb(n2U<><7&9dwGJmrob)4%H? zlQ%z+L-^$dFhhH|@u$%97Qz?*Ynh2VG@q|?8vY&L74&fs&_b&3$x&Oyjl~LQDRRap zJU4U*R+(2Dd!G+lh8!V{pT_UJn+^1Qg6$` zqkNm(a#hWyc6SP+p5=C4HL8-m`pO`5o~`-LI?_h5CsH?F_%?nDodmz&pWR20WTpJE z?N|wSzLjMUK8E)a2tI}Lf;+;*M|h3Y(U#>)g1>zk9|Hd}oZAa2 zLYBWBoSW!Ts!RwXr^8h+U*@{9{zqS^iH)Op<;r`Uw~nc}<^$V~_i%$GFjaG?X1@E|M`h)nekvFKt`Dh-f>@|0-`Xoq)o` zx;JmzDfOV9qCx|EVpogEe0LK~tGS?5$$L_i6P$P6wIsCQaP_;d{{N=iV@+8LI}o#( zvo*Ejy=IIn{rdIQh1&q-{EuohpVOjJ^Q3lD*YTp37$^RRgn8ihpdu5{Ct%5-KO!VL zcNB6dUajXI9jkm-P|i3~GB-A(X`P1Oqqb$tcku)UJw0w3GeUijb__#QT4j%64z%EeB7S?jlWwx_7&+EEvB|6N=kV}DwnyAlX=?j`) zmU#!$*^@NIu#n_d7;WoJV@*Fbv9|yJO4;n|BNF2xy(54RyB>t~8lUOUW$&2%Nwi1y zx6JxW88>U2$#qhl^6KUbtmg9}D0o5vYDT7kWJthLGkpGnN4T>{St^_EU>4;DmLF9o zr|LqsA8_MoNLQ=}w?8u!ziSZ@PC#Y<#9uJFo-ozVo6D;<8j^1$c|qAE3ZTE5i~zmE z$BU5lw6l=EWsg^y^;8>r9qH{xfL|~PZYK#md$zZ0?o11gV<*WSW~cgy2GYGQir%wf zt4iW8D+;s*;RGrmd(-T<@2&j(Cb9xhV*l-x`TpK`xq|7p?5R%5*s!69?2c!cC*VY* z2DE^9pvOPLU!1e}wA8S8opcTJ3`NB>hY=JQnL~QFXR4K8A$BqJnoEB$wn-%u@E6Mh zCfMF4kusv3N!(aHC}4)Xs^xoOwXd%e^6pi5|DZo=Q25j+6HlJ^7FodH6y1bMROR^q zGu6)fopS`h%Sw<;ZH%TEPf+#81-#_v+@8nlR0jLcIDKQtLleOC)6yLZgC!D9X3GgS zohwU{v$jl=quD#Go^hB{`@Qw*a%`(^jyT~=q^bWgGzRj;|12J55HWdCWV}EB|K=%N z3Nq-qxJJ`>^|1MNN+q}zTB&ooE3j==AgK@^UW<^oSbeALa2peF)Th6{@sj0KyMNHZ zksk1+MXN2tv+22A%cQOGpS9)77(uP9mh+!5T5ERLvF@b}$+WvXM45Z?-kCa)fb~f1 znVbTD$Gx-0Zxc`0D@YgHakge6SL0H`-vN_x?AP0>iGH0_EE&=v83hMJgaKAI0jJXm zVxVz;X<$v6WW7}fxROO7vr#YLP;;lij5VrX{;>7kK6TtOH&6|Ar^xo>00%+u$C4@# z>!jOt6*3><171+WxoZnKDTzJtDRw+T030;yI}~uV@9fCnei^I*j>Bp&mzP2d=FPb_ zCM*l_+$LDR3B*a!A$g#>xsrZvw0lckxmMg>0aQd7tPyN=t{dgXb;Ie+T8{fZH=gdu zM7Rg9c(kg(Jg0?ARRRl=AONFKrvFj)lTY$KfT%6^6s`mk*ABGhsce*LsoD>K{z_M2 ziPpnu+lw22PfF!CoId^6n*G4H(Ix+#+N{C(da7t1BYMGEaE#PdpOLxsVD5riQXHp@OX;`S`8VnpM~)I920w~<3|mo0 zf8~Az`*?2?H&gZ&*K&bRkV@qzvMlRHXys8*Ze2+1c?5o!^+$&MHxB@4Ee5cke52R! zmn7AZtY6ST%ixgU5)%$%QcwHj7Es-Qu^kLAPwy%7pGBw_4Q9#da^W2$}axNHr03)_nw z5?yuNmXrI5HgS46)c5&}B)Tts49oU92>3xBLLy}FMUW=84DQbVq^;7_e7|(Sdz|&J z73N+M`rc2rt*oSWu#7S{*s~nH6HRHJS1SmzeXk|;CA)FI4bat3<%}nkB%;;?=F>B7ms9QSxv#@+69;@>QaR?REYX4&)=itG>rM{<{A79Rmk)`5ON#GL`*KX%}Ihk3w(RtM-WLt z?f&FLF}4N^yE!(pZ&Yj&Bc`~K0@4_}*0Om?wN|}4WJ>WL;G^H2*QpgEkGA~OET-Km zkwz|5{6dnz1U<2Pe9DNL>3g5FEIvp1jzP&2K#z~j%g6!7B;^zF+o95?fV{3mnB8*RMhCDNp>Am-3e@jNfMj?jHV$MWjk!DDKP zkAz$Y?Sr)!GUOX}qTQ5aMh|wq1uq}~joWyKl=b_LboM#wi{CMuz5x6BKlA-qy++cM01D3b7`uD z#l6M4pI;JCypO8JZ6?U&wNxR!{4oB_ zlV!x9+-&Qy6{%MQ{~yoZGkKiTSC`YS_j22~G;xUV855g2&C(zm^V!(wpcm@zn{%!g z4}JGo(sGZ1O~to-}le

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s literal 0 HcmV?d00001 diff --git a/android_test/app/src/main/res/values/colors.xml b/android_test/app/src/main/res/values/colors.xml new file mode 100644 index 000000000..f8c6127d3 --- /dev/null +++ b/android_test/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/android_test/app/src/main/res/values/strings.xml b/android_test/app/src/main/res/values/strings.xml new file mode 100644 index 000000000..fb91d5377 --- /dev/null +++ b/android_test/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + JavaStellarSDKDemoApp + \ No newline at end of file diff --git a/android_test/app/src/main/res/values/themes.xml b/android_test/app/src/main/res/values/themes.xml new file mode 100644 index 000000000..3ef499ada --- /dev/null +++ b/android_test/app/src/main/res/values/themes.xml @@ -0,0 +1,5 @@ + + + +