fromXdr method Null safety
- XdrAsset xdrAsset
Generates an Asset object from a given XDR object xdrAsset
.
Implementation
static Asset fromXdr(XdrAsset xdrAsset) {
switch (xdrAsset.discriminant) {
case XdrAssetType.ASSET_TYPE_NATIVE:
return new AssetTypeNative();
case XdrAssetType.ASSET_TYPE_CREDIT_ALPHANUM4:
String assetCode4 =
Util.paddedByteArrayToString(xdrAsset.alphaNum4!.assetCode);
KeyPair issuer4 =
KeyPair.fromXdrPublicKey(xdrAsset.alphaNum4!.issuer.accountID);
return AssetTypeCreditAlphaNum4(assetCode4, issuer4.accountId);
case XdrAssetType.ASSET_TYPE_CREDIT_ALPHANUM12:
String assetCode12 =
Util.paddedByteArrayToString(xdrAsset.alphaNum12!.assetCode);
KeyPair issuer12 =
KeyPair.fromXdrPublicKey(xdrAsset.alphaNum12!.issuer.accountID);
return AssetTypeCreditAlphaNum12(assetCode12, issuer12.accountId);
case XdrAssetType.ASSET_TYPE_POOL_SHARE:
if (xdrAsset is XdrChangeTrustAsset) {
XdrAsset a = xdrAsset.liquidityPool!.constantProduct!.assetA;
XdrAsset b = xdrAsset.liquidityPool!.constantProduct!.assetB;
return AssetTypePoolShare(
assetA: Asset.fromXdr(a), assetB: Asset.fromXdr(b));
} else {
throw Exception("Unknown pool share asset type");
}
default:
throw Exception(
"Unknown asset type ${xdrAsset.discriminant.toString()}");
}
}